搜索列表单数据透视表

时间:2019-03-25 12:23:46

标签: php laravel eloquent laravel-5.6

我有3个模型,例如Model-1,Model-2,Model-3。

Model-2和Model-3有很多关系, 因此,我保留了一个像Model-2_Model-3这样的数据透视表。

Model-1与model-2有一种关系,我列出了来自model-1的所有数据,

我需要从数据透视表中搜索一列以列出Model-1。

例如:

$data = Model-1::with('Model-2')->get();

我需要使用数据透视表(Model-2_Model-3)搜索Model-1。

我已经返回了枢轴连接代码。 Pivot运行得很好。

2 个答案:

答案 0 :(得分:1)

您可以使用wherePivot()

查询数据透视表
Model-1::with('Model-2')->wherePivot('field_name', $value)->get();

如果未添加枢轴值,则需要将其添加为withPivot('field_name')

答案 1 :(得分:0)

您可能希望使用contains,因为对于多对多关系,您将获得第二模型的集合,例如$user->roles,因此您可以在此处检查$user->roles->contains('field_name')。以及$user->roles()->wherePivot('role_id', 1)->get()->isEmpty()$user->roles()->wherePivot('role_id', 1)->get(),具体取决于您的要求。