从雄辩的多种关系中选择多个模型

时间:2016-11-04 20:36:53

标签: php laravel laravel-5 eloquent many-to-many

我的应用在EmployersEmployees之间存在多对多关系,我正在尝试确定如何查询所有"员工"谁为一组公司工作。

例如,我可能希望选择" Industry Corp"的所有员工。和" Shovels Unlimited"

Example Data Relation

如果我单独查询这些内容,我会为Industry Corp获得[ Sam Nathan ],[ Kory Nathan ]适用于Shovels Unlimited

我可以单独选择这些,然后合并,但后来我得到了重复的Nathan [ Sam Nathan Kory Nathan ]

有没有办法让此查询返回结果[ Sam Nathan Kory ]?

我尝试过很多东西,但我尝试的并不是我所需要的。

这将从一个雇主

获得我需要的东西
Employer::find(2)->employees()->get()

这将为我提供两个或更多雇主

Employer::::findMany([2,4]);

但我不能简单地

Employer::::findMany([2,4])->employees()->get();

因为findMany([...])会返回Illuminate\Support\Collection

1 个答案:

答案 0 :(得分:2)

是的,你想使用whereHas

$employer_ids = [1, 2, 3];  // These are ids of employers you want to get all employees for.
$employees = Employee::whereHas('employers', function($q) use ($employer_ids) {
    $q->whereIn('employer_id', $employer_ids);
});