【问题标题】:Query Laravel Eloquent many to many where all id's are equal查询 Laravel Eloquent 多对多,其中所有 id 都相等
【发布时间】:2020-01-06 01:05:11
【问题描述】:

我基于 Laravel 制作了一个项目,并拥有以下表格:companiesattributesattribute_companyattribute_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 我已经尝试过了,不幸的是它不起作用:/

标签: php laravel eloquent eloquent-relationship


【解决方案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();

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 2017-07-30
    • 2013-06-19
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多