Почему мой Ларавель не знает, где работает запрос?

Почему мой Ларавель не знает, где работает запрос?

23.12.2019 07:30:06 Просмотров 37 Источник

Я пытаюсь создать условную Userдля простоты.

Я только хочу, чтобы Laravel искал фильтры, которые присутствуют в массиве.

Код

$searchFilters

Первая часть запроса работает: он извлекает роли на основе поискового запроса пользователя, но он не работает для названия компании или имени пользователя.

Редактировать

Это только не работает для названия компании.

У вопроса есть решение - Посмотреть?

Ответы - Почему мой Ларавель не знает, где работает запрос? / Why doesn't my Laravel conditional whereHas query work?

Является ответом!
Rwd

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);
});
https://stackoverflow.com/questions/59458522/why-doesnt-my-laravel-conditional-wherehas-query-work/59459166#comment105099608_59459166
Спасибо, работает отлично!
https://stackoverflow.com/questions/59458522/why-doesnt-my-laravel-conditional-wherehas-query-work/59459166#comment105099612_59459166
@BvdL рад, что смог помочь!
Закрыть X