我的应用在Employers
和Employees
之间存在多对多关系,我正在尝试确定如何查询所有"员工"谁为一组公司工作。
例如,我可能希望选择" Industry Corp"的所有员工。和" Shovels Unlimited"
如果我单独查询这些内容,我会为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
答案 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);
});