$term = $request->get('term');
$queries = Article::where('title','LIKE','%' . $term . '%')->published()->get();
我的研究正在进行中.如果我有一篇名为“我的伟大文章很棒”的文章,并且我在我的搜索表单中写了“greate article”,它就可以了.
但是,如果我写“文章真棒”,这些词语就不会互相影响,而且它不起作用.
如何使我的查询仅使用关键字?
谢谢
最佳答案
您可以执行以下操作:
$term = $request->get('term');
$keywords = explode(" ",$term);
$article = Article::query();
foreach($keywords as $word){
$article->orWhere('title','%'.$word.'%');
}
$articles = $article->published()->get();
如果只想要包含查询中所有单词的结果,只需将orWhere替换为where.
$filtered = ["a","an","the"];
$filteredKeywords = array_diff($keywords,$filtered);
或者,如果您想要更加动态,可以传递一个闭包:
$filteredKeywords = array_filter($keywords,function($word) {
return strlen($word) > 2;
});