我的搜索表单有一个SQL查询.
$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;});
总结 以上是内存溢出为你收集整理的php – 如何使我的SQL查询在句子中搜索几个单词,即使它们不相互跟随全部内容,希望文章能够帮你解决php – 如何使我的SQL查询在句子中搜索几个单词,即使它们不相互跟随所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)