Этот запрос должен выбрать сотрудников, чье имя или фамилия содержат строку $term, а затем также проверить, назначены ли эти сотрудники на работу, и вернуть только тех, кто не назначен на работу. Я использую сводную таблицу employee_job. Как бы то ни было, запрос возвращает даже тех сотрудников, которым уже назначен jobid и есть запись в сводной таблице.
$employees =
Employee::where(function($query) use ($term) {
$query->where('firstname', 'LIKE', '%' . $term . '%')
->orWhere('lastname', 'LIKE', '%' . $term . '%'); })
->whereHas('jobs', function($query) use ($jobid) { $query->where('jobs.id','!=',$jobid); })
->take(5)->get();
Я могу сказать, что ошибка заключается в том, что она не проверяет, равно ли количество заданий с идентификатором задания 0, а возвращает всех сотрудников, у которых есть какие-либо другие задания, где идентификатор задания не совпадает, даже если у них есть задание, которое соответствует идентификатору задания. .
мне нужно что-то вроде этого
$query->where('jobs.id',$jobid)->count() == 0;