嗨,我正在使用以下功能从用户关键字搜索中返回结果:
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”的结果
反正我只能返回与完整单词匹配的结果吗?
答案 0 :(得分:0)
也许尝试在查询中的关键字前后添加一个空格?像这样:
$query->orWhere('title', 'like', "% {$keyword} %");