方案
我有3个主要表Employees
,Jobs
,Skills
。 Employees
和Jobs
与many-to-many
表格有Skills
的关系。
因此,员工可以拥有技能1,2,3,5
。 job
可能需要skills
1,3,5
。
现在我的问题是如何在一个雄辩的查询中匹配id。比如,如果我想搜索所有employees
的{{1}}需要job
,那么它应该搜索所有skills 1,3,5
所有employees
skills(1,3,5)
答案 0 :(得分:2)
您说您有一系列ID,因此请使用多个whereHas()
:
$employees = Employee::JobLocations($jobZipId);
foreach ($skillIds as $id) {
$skilledEmployees = $emloyees->whereHas('skills', function ($q) use ($id) {
$q->where('id', $id);
});
}
$skilledEmployees = $skilledEmployees->get();
答案 1 :(得分:0)
您可以这样做,我将$job
视为已定义的对象。
Employee::whereHas('skills', function($q) use($job) {
$q->whereIn('id', $job->skills->lists('id')->toArray());
})->get();
<强>更新强>
对于Laravel 5.3及更高版本,方法lists
将不起作用(因为它被移除),因此您也可以使用pluck
方法而不是lists
。
希望这可以帮助您解决问题。