查询 Laravel Eloquent 多对多,其中所有 id 都相等
Posted
技术标签:
【中文标题】查询 Laravel Eloquent 多对多,其中所有 id 都相等【英文标题】:Query Laravel Eloquent many to many where all id's are equal 【发布时间】:2020-01-06 01:05:11 【问题描述】:我基于 Laravel 制作了一个项目,并拥有以下表格:companies
、attributes
和 attribute_company
当 attribute_company
用作连接 companies
和 @987654326 的数据透视表时,关联为多对多关系@表。
我从客户那里得到了一组attribute_id
,我需要得到完全具有全部属性的公司的结果。
我找到的唯一解决方案是查询whereHas
结合whereIn
里面这样:
Company::whereHas('attributes', function (Builder $query) use ($atts_ids)
$query->whereIn('attribute_id', $atts_ids);
)->get();
如果找到至少一个 attribute_id
(这不是我要查找的),则此查询将返回 companies
。
如果有人能让我更清楚,那就太好了。
提前谢谢大家:)
【问题讨论】:
尝试在 whereHas 函数中添加 foreach 循环。 @JinalSomaiya 我已经尝试过了,不幸的是它不起作用:/ 【参考方案1】:一种可能的解决方案:
$company = new Company();
$company = $company->newQuery();
foreach($atts_ids as $att_id)
$company = $company->whereHas('attributes', function (Builder $query) use ($att_id)
$query->where('attribute_id', $att_id);
);
$company = $company->get();
【讨论】:
以上是关于查询 Laravel Eloquent 多对多,其中所有 id 都相等的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 多对多查询 whereIn
从父多对多关系获取所有子模型 Laravel Eloquent