查询 Laravel Eloquent 多对多,其中所有 id 都相等
Query Laravel Eloquent many to many where all id's are equal
我基于 Laravel 制作了一个项目,并且有 tables:companies
、attributes
和 attribute_company
作为多对多关系当 attribute_company
用作支点 table 连接 companies
和 attributes
tables.
我从客户那里得到了一个 attribute_id
的数组,我需要得到完全具有全部属性的公司的结果。
我找到的唯一解决方案是像这样在内部查询 whereHas
和 whereIn
组合:
Company::whereHas('attributes', function (Builder $query) use ($atts_ids) {
$query->whereIn('attribute_id', $atts_ids);
})->get();
如果至少找到一个 attribute_id
(这不是我要找的),此查询将 return companies
。
如果有人能为我说得更清楚,那就太好了。
提前谢谢大家:)
一种可能的解决方案:
$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 制作了一个项目,并且有 tables:companies
、attributes
和 attribute_company
作为多对多关系当 attribute_company
用作支点 table 连接 companies
和 attributes
tables.
我从客户那里得到了一个 attribute_id
的数组,我需要得到完全具有全部属性的公司的结果。
我找到的唯一解决方案是像这样在内部查询 whereHas
和 whereIn
组合:
Company::whereHas('attributes', function (Builder $query) use ($atts_ids) {
$query->whereIn('attribute_id', $atts_ids);
})->get();
如果至少找到一个 attribute_id
(这不是我要找的),此查询将 return companies
。
如果有人能为我说得更清楚,那就太好了。
提前谢谢大家:)
一种可能的解决方案:
$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();