首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel hasManyThrough多态表格不工作

Laravel的hasManyThrough多态关联是一种用于建立多对多关系的关联方法。它允许通过中间表格来连接两个具有多态关联的模型。

具体来说,hasManyThrough多态关联可以用于解决以下场景:当两个模型之间存在多对多关系,并且这两个模型都与一个中间模型存在多态关联时,我们可以使用hasManyThrough多态关联来简化查询和操作。

在Laravel中,hasManyThrough多态关联的定义需要在模型中进行配置。首先,我们需要在两个具有多态关联的模型中定义多态关联方法。例如,我们有一个Post模型和一个Video模型,它们都与Comment模型存在多态关联。在Post模型中,我们可以定义一个comments方法来建立与Comment模型的多态关联:

代码语言:txt
复制
public function comments()
{
    return $this->morphMany(Comment::class, 'commentable');
}

同样地,在Video模型中,我们也可以定义一个comments方法来建立与Comment模型的多态关联:

代码语言:txt
复制
public function comments()
{
    return $this->morphMany(Comment::class, 'commentable');
}

接下来,我们可以在中间模型中定义hasManyThrough多态关联。假设我们有一个User模型作为中间模型,我们可以在User模型中定义一个posts方法来建立与Post模型的多态关联:

代码语言:txt
复制
public function posts()
{
    return $this->hasManyThrough(Post::class, Comment::class, 'user_id', 'commentable_id', 'id', 'id')
                ->where('commentable_type', Post::class);
}

在上述代码中,我们通过hasManyThrough方法指定了关联的目标模型(Post模型)、中间模型(Comment模型)、中间模型的外键(user_id)、目标模型的外键(commentable_id)、中间模型的主键(id)以及目标模型的主键(id)。同时,我们使用where方法来筛选出commentable_type为Post的记录,以确保只获取与Post模型相关的评论。

使用hasManyThrough多态关联后,我们可以通过User模型来访问与之关联的Post模型。例如,我们可以通过以下方式获取某个用户的所有帖子:

代码语言:txt
复制
$user = User::find(1);
$posts = $user->posts;

以上就是Laravel中hasManyThrough多态关联的基本概念、分类和应用场景。对于Laravel开发者来说,掌握hasManyThrough多态关联可以更加方便地处理多对多关系,并简化查询和操作的过程。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM、腾讯云对象存储COS。

腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb

腾讯云云服务器CVM:https://cloud.tencent.com/product/cvm

腾讯云对象存储COS:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel源码分析之模型关联

按照Laravel设定好的模式来写关联模型每个人都能写出高效和优雅的代码 (这点我认为适用于所有的Laravel特性)。...\Eloquent\Relations\HasManyThrough */ public function hasManyThrough($related, $through, $firstKey =...类的实例,实例化 hasManyThrough时的操作跟实例化 BelongsToMany时做的操作非常类似。...模型关联常用的一些功能的底层实现到这里梳理完了,Laravel把我们平常用的join, where in 和子查询都隐藏在了底层实现中并且帮我们把相互关联的数据做好了匹配。...还有一些我认为使用场景没那么多的多态关联、嵌套预加载那些我并没有梳理,并且它们的底层实现都差不多,区别就是每个关联类型有自己的关联约束、匹配规则,有兴趣的读者自己去看一下吧。

9.5K10

Laravel学习记录--Model

- 多态一对 - 多态一对多 - 多态多对 关联查询 继承:ILLuminate\Database\Eloquent\Model model与表名的关系 表名去掉...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我的另一个博客 - - - Laravel...()方法建立远程一对多关联 hasManyThrough(related,through,firstKey,secondKey,localKey,secondLocalKey) related:关联模型类...hasManyThrough方法并返回结果 public function articles(){ return $this->hasManyThrough('App\Article'...,如用户信息的评论(可能例子恰当,反正体先多态关联)这两种评论结构是一样的,没接触这个之前我们可能会创建两种评论表分别存储文章评论和用户信息的评论,但多态关联解决了这一问题,我们只需键一张评论表,利用这张表存储两种评论

13.4K20

Laravel 模型关联基础教程详解

Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...Laravel 的模型关联可能会让人糊涂。如果你不完全理解 Laravel 的关联在这一点上是如何工作的,别担心,读完这篇文章后,你会更好地理解它。 我们应该使用哪个模型关联?...: suppliers: - idproducts: - id - supplier_idproduct_history: - id - product_id 即使 product_history 表包含...Eloquent\Model; class Supplier extends Model { public function productHistory() { return $this- hasManyThrough...php $invoice = \App\Invoice::find(1); // Get the user $invoice- user- first_name; 查询多对多关联的工作方式与其他关联完全相同

5.5K31

跟我一起学Laravel-EloquentORM进阶部分

} 方法hasManyThrough的第一个参数是我们希望访问的模型名称,第二个参数是中间模型名称。...HasManyThrough hasManyThrough( string $related, string $through, string|null $firstKey...) 多态关联使得同一个模型使用一个关联就可以属于多个不同的模型,假设这样一个场景,我们有一个帖子表和一个评论表,用户既可以对帖子执行喜欢操作,也可以对评论执行喜欢操作,这样的情况下该怎么处理呢?...多对多的多态关联 多对多的关联使用方法morphToMany和morphedByMany,这里就不多废话了。...关联关系查询 在Eloquent中,所有的关系都是使用函数定义的,可以在执行关联查询的情况下获取关联的实例。

4K50

详解Laravel设置多态关系模型别名的方式

作为 Laravel 的重度使用者肯定都对多态关系默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是 多态多对多(Many To Many (Polymorphic...Relations\Relation; Relation::morphMap([ 'posts' = 'App\Post', 'videos' = 'App\Video', ]); https://laravel.com...思路来源 我尝试跟踪了一遍源码,发现模型中有一个方法 getMorphClass ,多态关联的时候,就是用它来取目标对象的类型名称的,默认返回类名: public function getMorphClass...总结 以上所述是小编给大家介绍的Laravel设置多态关系模型别名的方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

1.9K21

推荐超好用的 6 款 Laravel Admin 管理模版

一些流行的支持该功能的 Laravel 管理模板包括 Nova、Backpack 和 Orchid 等。 但缺点是,如果您业务上有着复杂的模型关系,可能很难让它按照您的要求来工作。...如果希望花钱,那么找一个开源并且有着更活跃的社区的模板是一个更好的选择。...通常大多数 Laravel 模型在 Nova 中工作无需任何额外的配置,但您可以定义具体的细节,如字段如何被编辑等。 此外,Nova 另一个值得关注的特点是允许您在一个或多个模型上执行自定义任务。...表格过滤和排序以及文本搜索等便利的功能来快速开发管理模板。...其专业版(149 美元授权)含有 100+ 灵活的组件,如图表、表格等。

7.5K41

orm 系列 之 Eloquent演化历程2

ConnectionResolverInterface负责connection的管理,原先这些功能在稍早的版本中都是揉在一起的,还是那个观点: 随着项目复杂度的提升,我们遵循关注点分离的原则,不断去对系统做解耦工作...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...例如,假设应用用户既可以对文章进行评论也可以对视频进行评论,使用多态关联,你可以在这两种场景下使用单个comments表,首先,让我们看看构建这种关联关系需要的表结构: posts id - integer...通过上面3步启动完后,我们就能开始下面的工作了,先看第一个Building Schema,即数据库本身的操作,我们给出示例的代码: use Illuminate\Database\Capsule\Manager...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系

2.4K30

Laravel Eloquent 模型关联关系(下)

如果返回的文章结果是列表的话,需要遍历获取作者信息,假设要循环 N 次的话,加上文章模型本身的获取,总共需要进行 N + 1 次查询,而 PHP 对数据库的连接是短连接,每次都要重新连接数据库,所以从性能角度考虑建议使用这种方式...学院%'); })->get(); 底层执行的 SQL 查询语句如下: 如果你想进一步过滤出文章标题和评论都包含「Laravel学院」的用户,可以在上述闭包函数中通过查询构建器进一步指定: $users...很显然,它们用于过滤包含对应关联结果的模型实例。...`commentable_type` = "App\Post" and `content` like "Laravel学院%" and `comments`....,我们分了三篇的篇幅来介绍 Eloquent 模型的管理关系,回顾一下,主要包含以下内容: 七种关联关系的定义:一对一、一对多、多对多、远层一对多、一对一的多态关联、一对多的多态关联、多对多的多态关联;

19.5K30

最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云

[最棒的 7 个 Laravel admin 后台管理系统推荐] 本文首发:《最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云》 Laravel 已经凭借自己的易用性及低门槛成为...数周的工作量,1 小时即可完成。详情请见本文文末。...涵盖大多数场景需求的 7 个最棒的 Laravel admin 后台管理系统 Laravel Nova - Laravel 官方出品,品质保证 laravel-admin - 国人开发的高品质开源 Laravel...laravel-admin 经过几年的迭代,内置的扩展已经比较完善,表格、表单、时间选择、搜索、过滤等,还有 laravel-admin 内置用户权限管理系统,这点与 Nova 的开发逻辑不同,Nova...:https://github.com/orchidsoftware Orchid 开发者是一位俄国人,Alexandr Chernyaev,Orchid 帮助使用者快速搭建管理后台,内置表单构建器、表格过滤器

6.2K00

moTzxx-CMS ——

菜单管理 菜单的链接即为定义的路由,一般若是根级目录下有二级目录时,此根级目录的链接生效,不然无法正确引导其他页面 ? ②....此处较为亮点的功能即为 layer文件上传、UEditor富文本编辑器的使用,具体的实现可以参考下面两篇文章: Laravel+Layer 图片上传功能整理 Laravel 框架集成 UEditor...邮件发送 为了个人配置信息的不被泄露,我注释掉了自己的邮件发送信息,即申请的163邮箱账号,当然在所提供的源码中,只在Laravel5.5中实现了 ?...GitHub源码下载 moTzxx-CMS-ThinkPHP5.5 moTzxx-CMS-Laravel5.5 ③....等 model类 命名的方式不一样,注意 "s",比如表格articles,前者model命名为Articles,后者却为Article 对于数据表的字段命名,注意到一点:ThinkPHP5.1 不能用

3.9K30

快速上手小程序云开发

表单属性、表格结构 CSS基础 基础语法和选择器、CSS引用方式 CSS属性 CSS背景色 、背景图、字体、文字、列表、表格、内容 CSS盒子模型 盒子模型简介、块级元素和行内元素、盒子模型属性...、函数 函数 字符串函数、数学函数、日期函数、数组函数 PHP图形图像处理(GD库)(掌握) PHP文件系统处理(掌握) 文件操作、目录操作 PHP面向对象程序设计 面向对象特性(继承、封装、多态...)、操作符、static关键字、 设计模式 PHP操作数据库 Session操作、cookie操作 PHP Web开发框架-Laravel Web前后端交互技术 (1)WEB概述(了解) (2)HTTP...协议(掌握) ✓ HTTP协议概述、通信过程、状态值汇总 (3)Ajax(掌握、应用) ✓ Ajax简介、工作原理 ✓ JSON解析,XML解析 ✓ DOM操作 (4)Iframe(了解)...(5)Cookie(掌握) ✓ Cookie工作原理、作用、创建、使用、销毁 (6)Socket通信(了解) ✓Socket概念、工作原理、服务端与客户端、通信协议、通信 机制、通信过程 (1

3.3K50

nextline函数_Java 中nextLine()方法没有执行直接跳过解决办法

直接跳过没有执行; 截图:第三个输入直接跳过 通过上网的查找我终于发现了问题出在哪里: 原来nextLine()函数获取的是一整行的内容其中也包括了(\n)也就是换行符 而nextInt()函数获取的仅仅是一个值包含...jeffwong */ public class InfiniteRecursion { public String t … c#和java中的方法覆盖——virtual、override、new 多态和覆盖...多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 … Java...在Java中,其实方法就是函数,只不过叫法不同,在 … 随机推荐 nginx服务器设置url的优雅链接 对于LNMP这样架构的网站来说,一般都是基于php框架开发,php框架一般都会讲究优雅链接,比如Laravel...idea下,没有学习Maven的情况下使用Mybatis的逆向工程好像有点复杂,资料太少了-找到的资料好像也行不通- 于是学完Maven之后,我就再来更新Idea下使用Myb … SEO百问 SEO 的工作过程中

1.1K20

Wizard 开源文档管理系统 1.0 发布啦

文档管理起来的工具,但在这近两年的时间里,一直断断续续的为其添加各种功能,现在终于下决心发布1.0版本了,目前支持三种类型的文档管理 Markdown:也是Wizard最主要的文档类型,研发团队日常工作中交流所采用的最常用文档类型...,在 Wizard 中,对 Editor.md 项目进行了功能扩展,增加了文档模板,Json 转表格,图片粘贴上传等功能 ?...Table:这种文档类型是类似于 Excel 电子表格,采用了 x-spreadsheet 项目,将该项目嵌入到了 Wizard 中,目前还不是很完善 ?...,Notifications 等,非常适合用来学习 Laravel 框架。...如果你是一名 PHP 或者 Laravel 新手,想找个项目学习一下如何用 Laravel 做 Web 开发,这个项目更加不能错过!

2.6K30
领券