Laravel 5.1 中 3 个模型之间的关系(“像多对多通过”)

Posted

技术标签:

【中文标题】Laravel 5.1 中 3 个模型之间的关系(“像多对多通过”)【英文标题】:Relation between 3 Models in Laravel 5.1 ("like many-to-many-through") 【发布时间】:2015-10-11 03:16:16 【问题描述】:

我正在为考试开发一个简单的学校管理应用程序,到目前为止,我已经在 School 模型和 Field 模型之间建立了一个简单的多对多关系当然还有数据透视表。

现在我想将我的用户模型与它们关联起来,以便我可以查询例如

user 正在 school

学习 field_of_study

最后我希望能够查询例如

有多少用户在学校 XY 学习,或者,

有多少人在研究 Field Z,或者,

有多少人在学校 XY 学习 Field Z。

此外,我希望能够查询给定学校的所有学习领域,反之亦然。

到目前为止我的桌子

users:

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| id         | bigint(20) unsigned |
| username   | varchar(60)         |
| password   | varchar(60)         |
+------------+---------------------+

schools:

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| id         | bigint(20) unsigned |
| name       | varchar(60)         |
+------------+---------------------+

fields:

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| id         | bigint(20) unsigned |
| name       | varchar(60)         |
+------------+---------------------+

schools_pivot:

+------------+---------------------+
| Field      | Type                |
+------------+---------------------+
| id         | bigint(20) unsigned |
| school_id  | bigint(20)          |
| field_id   | bigint(20)          |
+------------+---------------------+

不幸的是,我完全不知道如何以这种方式关联三个 Eloquent 模型,并且在网络上找不到任何东西(我可能搜索了错误的术语)。

我对 Laravel 和 Eloquent 还很陌生,所以请善待我 ;)

【问题讨论】:

这可能对你有帮助***.com/questions/39509088/… 【参考方案1】:

最好先定义两个表之间的关系,然后交替定义另一个表。你可以阅读这篇文章。或许对你有帮助 three-way-pivot-table-in-eloquent

【讨论】:

谢谢@user2480902 - 我已经在调查那个帖子了。最后,我添加了另一个模型和表格,它连接了用户、学校和领域(通过 schools_pivot 表格)并通过预先加载来利用新的关系。

以上是关于Laravel 5.1 中 3 个模型之间的关系(“像多对多通过”)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 - 具有空值的模型上的关系

Laravel 5.1 删除关系

如何在laravel中获取嵌套关系模型[重复]

在laravel 5.1单元测试中嘲笑hasMany关系

Laravel 多对多与 3 个模型

如何在 Laravel 中参考这个 json 文件以及库存和产品之间的关系来制作模型?