加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 如何使我的SQL查询在句子中搜索几个单词,即使它们不相互

发布时间:2020-12-11 23:42:13 所属栏目:MySql教程 来源:网络整理
导读:我的搜索表单有一个SQL查询. $term = $request-get('term');$queries = Article::where('title','LIKE','%' . $term . '%')-published()-get(); 我的研究正在进行中.如果我有一篇名为“我的伟大文章很棒”的文章,并且我在我的搜索表单中写了“greate article

我的搜索表单有一个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;
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读