Php 搜索列表单透视表

Php 搜索列表单透视表,php,laravel,eloquent,laravel-5.6,Php,Laravel,Eloquent,Laravel 5.6,我有3种型号,例如:1型、2型、3型 模型2和模型3具有多对多关系, 所以我保留了一个数据透视表,如Model-2\u Model-3 模型1与模型2有一个关系,我列出了模型1的所有数据 我需要从pivot表中搜索一列来查找清单Model-1 例如: $data = Model-1::with('Model-2')->get(); 我需要使用pivot表(Model-2\u Model-3)搜索Model-1 我已经返回了pivot连接代码。Pivot工作得很好。您可以使用wherePi

我有3种型号,例如:1型、2型、3型

模型2和模型3具有多对多关系, 所以我保留了一个数据透视表,如Model-2\u Model-3

模型1与模型2有一个关系,我列出了模型1的所有数据

我需要从pivot表中搜索一列来查找清单Model-1

例如:

$data = Model-1::with('Model-2')->get();
我需要使用pivot表(Model-2\u Model-3)搜索Model-1


我已经返回了pivot连接代码。Pivot工作得很好。

您可以使用
wherePivot()查询Pivot表。


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

您可能希望使用
包含
,因为对于多对多关系,您将获得第二个模型的集合,类似于
$user->roles
,因此您可以在这里检查
$user->roles->contains('field_name')
。以及
$user->roles()->wherePivot('role_id',1)->get()->isEmpty()
$user->roles()->wherePivot('role_id',1)->get()
取决于您的需求。

模型2和模型3只有多对多关系。所以我需要在Model-2_Model-3透视表上搜索。并应按模型1进行筛选。此解决方案是直接从数据透视表中查找数据。当模型2和模型3连接时,我们可以使用这种方法。但我的场景是主表是模型1,模型1连接模型2、模型2和模型3,具有多对多关系。我需要使用Model-2\u Model-3透视表筛选Model-1。我试过了,但没用。使用whereHas,我们可以仅使用型号2对型号1进行文件管理。嵌套whereHas不起作用。在这种情况下,您也将有一个hasManyThrough关系,因此您将再次获得一个集合,因此我认为您可以使用contains,并且我希望看到您尝试过的WHEREPHAS子句,然后我可能能够帮助您。$data=Model-1::WHERHAS('Model-2',function($q){$q->whereHas('model-3',function($qr){$qr->where('model-3.id',1);})->wherePivot('type','=','1')->get();@midhunprakash如果这解决了你的问题,你应该把它作为答案发布。@midhunprakash你能尝试一下“$roles=model-1::with('model-2')->whereHas('model-3.id',function吗($query){$query->where('model-3.id',1);});})->get();`如果您得到任何错误或正确的结果,请告诉我?
Model-1::with('Model-2')->wherePivot('field_name', $value)->get();