Искать в Laravel - PullRequest
       9

Искать в Laravel

0 голосов
/ 30 октября 2018

У меня есть следующий запрос

$objects = Object::where('user_id', auth()->user()->id)
                ->where('object_name','LIKE','%'.$request->search."%")
                ->get();

Возвращает все объекты для текущего пользователя, содержащие ключевое слово. Это только поиск по ключевому слову в столбце object_name.

Поскольку я хочу выполнять поиск как в object_name, так и в object_description, я добавил предложение orWhere следующим образом:

 $objects = Object::where('user_id', auth()->user()->id)
            ->where('object_name','LIKE','%'.$request->search."%")
            ->orWhere('object_description','LIKE','%'.$request->search."%")
            ->get();

Теперь он возвращает все объекты, содержащие ключевое слово в object_name или object_description, но он выполняет поиск во всей базе пользователей .

Мне нужно изменить этот запрос, чтобы я мог искать ключевое слово в object_name или object_description, но область поиска должна быть ограничена текущим вошедшим в систему пользователем.

1 Ответ

0 голосов
/ 30 октября 2018

Вы должны изменить свой запрос следующим образом

$search = $request->search;
$objects = Object::where('user_id', auth()->user()->id)
    ->where(function($query) use ($search) {
         $query->where('object_name','LIKE',"%{$search}%")
             ->orWhere('object_description','LIKE',"%{$search}%");
      })
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...