Как создать запрос для поиска в Laravel? - PullRequest
0 голосов
/ 22 марта 2019

Я использую laravel 5.2 и пытаюсь создать функцию поиска, в которой я пытаюсь выполнить запрос по нескольким столбцам, но не получаю ожидаемого результата.

Я использую этот запрос:

    $wachat = Table::where('key', '=', $d1) 
    ->orWhere('message', 'LIKE', "%{$searchByContact}%")
    ->orWhere('abc', 'LIKE', "%{$searchByContact}%")
    ->orWhere('xyz', 'LIKE', "%{$searchByContact}%")
    ->orderBy('id', 'DESC')->paginate(20);

Я получаю результаты, но здесь я хочу отфильтровать все, что является ключом.Но с помощью сложного запроса я получаю результат по всем ключам. В любом случае, я могу создать запрос, а затем просто отобразить результат, где ключом является что угодно.

1 Ответ

1 голос
/ 22 марта 2019

Проблема в том, что вы используете ->orWhere() методы, которые отменят критерии поиска предыдущих вызовов.

Вы должны использовать закрытие ->where() для второй части запроса:

$wachat = Table::where('key', '=', $d1) 
    ->where(function($query) use ($searchByContact) {
        $query->where('message', 'LIKE', "%{$searchByContact}%")
            ->orWhere('abc', 'LIKE', "%{$searchByContact}%")
            ->orWhere('xyz', 'LIKE', "%{$searchByContact}%");
    })
    ->orderBy('id', 'DESC')
    ->paginate(20);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...