Eloquent - возвращает реестр, только если он не имеет значения, связанного с отношением - PullRequest
1 голос
/ 01 августа 2020

У меня есть этот вопрос, может быть, кто-нибудь мне поможет:)

Student::whereHas('courses.group', function ($query) use ($year) {
            $query->where('year', '!=', $year);
        })->orDoesntHave('courses')->where('active', '=', '1')->get()

У меня этот запрос красноречивый, он работает, но у меня проблема. Что мне действительно нужно получить по этому запросу, так это все реестры students, которые имеют groups, связанные через сводную courses, в какой из всех групп он должен возвращать student, только если он не t имеет значение $year, зарегистрированное в его группах, или, если его нет, courses. Любая идея? :)

1 Ответ

1 голос
/ 01 августа 2020

WhereHas() имеет обратный логарифм c с whereDoesntHave(). Вам нужно изменить logi запросов c, но это должно быть прямо, насколько я понимаю, это должно работать.

Student::whereDoesntHave('courses.group', function ($query) use ($year) {
    $query->where('year', $year);
})->orDoesntHave('courses')
->where('active', '=', '1')
->get();
...