匹配数据透视表中的ID数组

时间:2016-11-06 05:59:19

标签: php laravel laravel-5.2

方案

我有3个主要表EmployeesJobsSkillsEmployeesJobsmany-to-many表格有Skills的关系。

因此,员工可以拥有技能1,2,3,5job可能需要skills 1,3,5

现在我的问题是如何在一个雄辩的查询中匹配id。比如,如果我想搜索所有employees的{​​{1}}需要job,那么它应该搜索所有skills 1,3,5所有employees

skills(1,3,5)

2 个答案:

答案 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

希望这可以帮助您解决问题。