我有三种型号
联系人模型
联系人角色模型
项目模型
设置;
联系人可以属于多个项目。 (很多对很多)
每个项目都有由用户创建的自己的联系人角色。 (一对多-角色特定于项目)
在选定的项目中,可以将联系人分配给多个角色(多对多)
棘手的部分是我有角色模型的类别,当用户创建角色时,他们从下拉列表中(从数据库中,总共7个预定义类别)为该角色选择一个类别。
然后我尝试做的事情并在理解上有问题;
1。显示特定项目上具有给定角色的所有联系人的最佳方法是什么?
我可以很容易地得到$project->contacts() //this gives me all contacts within that project
,但我需要更进一步,可以与他们的角色取得联系。
2。此外,我将如何显示属于该项目所选类别的所有联系人?
3。我应该在模型之间使用除多对多以外的其他连接吗?
答案 0 :(得分:0)
假设-与
显示
您实际上的意思是雄辩的恢复。
建议词-阅读DOCS! Laravel具有出色且易于理解的文档。
https://laravel.com/docs/5.7/eloquent-relationships#eager-loading
1)我可以很容易地获得$ project-> contacts()//这可以使我获得该项目中的所有联系人,但是我需要更进一步,可以与他们的角色取得联系。
嵌套渴望加载:
$project = Project::with('contacts.roles')->find($id);
2)此外,我将如何显示属于该项目所选类别的所有联系人?
限制渴望的负载并查询关系的存在:
$project = Project::with(['contacts', function($q) use ($categoryId) {
$q->with('roles')->whereHas(['category' => function($q2) use ($categoryId) {
$q2->whereId($categoryId);
});
}]);
3。我应该在模型之间使用除多对多以外的其他连接吗?
结构对我来说很好。