Почему мой Ларавель не знает, где работает запрос?
Я пытаюсь создать условную User
для простоты.
Я только хочу, чтобы Laravel искал фильтры, которые присутствуют в массиве.
Код
$searchFilters
Первая часть запроса работает: он извлекает роли на основе поискового запроса пользователя, но он не работает для названия компании или имени пользователя.
Редактировать
Это только не работает для названия компании.
У вопроса есть решение - Посмотреть?
Ответы - Почему мой Ларавель не знает, где работает запрос? / Why doesn't my Laravel conditional whereHas query work?
Является ответом!

23.12.2019 08:27:26
Вы orWhere
состояние находится внутри другогоwhere
поэтому я предполагаю, что оно не будет работать так, как ожидалось.
Я бы предложил изменить ваши whereHas
на orWhereHas
а затем изменить orWhere
внутри него на where
:
$users = User::when(in_array('roles', $searchFilters), function ($query) use ($searchWildcard) {
$query->whereHas('roles', function ($query) use ($searchWildcard) {
$query->where('name', 'LIKE', $searchWildcard);
});
})->when(in_array('company', $searchFilters), function ($query) use ($searchWildcard) {
$query->orWhereHas('company', function ($query) use ($searchWildcard) {
$query->where('name', 'LIKE', $searchWildcard);
});
})->when(in_array('name', $searchFilters), function ($query) use ($searchWildcard) {
$query->orWhere('name', 'LIKE', $searchWildcard);
});
Помочь в развитии проекта: