Laravel搜索查询仅匹配全词

时间:2019-02-04 20:33:19

标签: mysql laravel-5

嗨,我正在使用以下功能从用户关键字搜索中返回结果:

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'));
    }

这相对可以,但是返回包含关键字一部分的结果。也就是说,如果我搜索Bot,它将返回标题或描述均为“ both”的结果

反正我只能返回与完整单词匹配的结果吗?

1 个答案:

答案 0 :(得分:0)

也许尝试在查询中的关键字前后添加一个空格?像这样:

 $query->orWhere('title', 'like', "% {$keyword} %");