Фильтр Laravel со строителем запросов, извлекающим неверные данные

Запрос извлекает неверные данные, должен извлекать только departamento ненулевой. Может кто-нибудь мне помочь?

Код:

$banca = Banca::with(['trabalho.membrobanca.departamento' => function($query) use ($d) {
$query->where('id', $d);
}])->get();

$banca = collect($banca)
->unique('trabalho_id')
->values()
->all();

Приведи это

Диаграмма с отношениями.

схема

0

Решение

Вы можете поставить фильтр на memrobanca таблица и фильтр на нулевые значения.

$banca = Banca::with([
'trabalho.membrobanca' => function($query) use ($d) {
$query->where('departamento_id', $d)
->whereNotNull('departamento_id')
->with('departamento');
}
])
->get();
0

Другие решения

Вы можете использовать функцию Laravel has (). Вернется возврат Banca где Departamento не нуль

$banca = Banca::with(['trabalho.membrobanca.departamento' => function($query) use ($d) {
$query->where('id', $d);
}])

// has function will return banca if banca has non-null departamento
->has('trabalho.membrobanca.departamento')

->get();

Проверь это:

https://laravel.com/docs/5.4/eloquent-relationships#querying-relationship-existence

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector