Поисковый запрос Laravel, соответствующий только полным словам - PullRequest
0 голосов
/ 04 февраля 2019

Привет. Я использую следующую функцию для получения результатов поиска по ключевому слову пользователя:

public function search(Request $request)
    {
        $q = $request->query('q');
        $keywords = explode(" ", $request->query('q'));
        $resources = Resource::where(function ($query) use ($keywords) {
                                    foreach ($keywords as $keyword) {
                                        $query->orWhere('title', 'like', "%{$keyword}%");
                                    }
                                })
                                ->orWhere(function ($query) use ($keywords) {
                                    foreach ($keywords as $keyword) {
                                        $query->orWhere('description', 'like', "%{$keyword}%");
                                    }
                                })
                                ->paginate(20);
        return view('resources.search',compact('resources','q'));
    }

Это работает относительно хорошо, но возвращает результаты, содержащие часть ключевого слова.то есть, если я ищу бота, он возвращает результаты, в названии или описании которых есть «оба»

В любом случае я могу вернуть только результаты, соответствующие полному слову?

1 Ответ

0 голосов
/ 04 февраля 2019

Может быть, попробуйте добавить пробел до и после ключевого слова в вашем запросе?Что-то вроде:

 $query->orWhere('title', 'like', "% {$keyword} %");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...