Я пытаюсь выполнить этот запрос в Laravel 5.4 с Eloquent, и я не получу подзапрос, чтобы он функционировал так, как должен. Это оригинальный SQL-запрос:Eloquent Where In With Join Subquery
select * from projects p
inner join projects_categories pc on p.id = pc.project_id
where pc.name in (select pc.name from projects p
inner join projects_categories pc on p.id = pc.project_id
where p.id = $project->id) and p.id <> $project->id;
Это то, что я пытаюсь сделать:
Project::join('projects_categories', 'projects.id', '=', 'projects_categories.project_id')
->whereIn([
['projects_categories.name', function ($query) {
$query->select('projects_categories.name')
->from('projects')
->join('projects_categories', 'projects.id', '=', 'projects_categories.project_id')
->where('project.id', '=', $project->id);
}],
['projects.id', '<>', $project->id]
])
->get();
Но я все время получаю ошибку обратно:
Отсутствует аргумент 2 для Illuminate \ Database \ Query \ Builder :: где().
Может ли кто-нибудь помочь мне с этим? Большое вам спасибо за ваше время и помощь.
Да !!! Большое вам спасибо! – jandro935