首页 > 解决方案 > 在 laravel 的同一列中搜索多个单词

问题描述

我需要title在 laravel 的列中搜索多个单词。就像如果我搜索tea break那么我只需要获取那些标题内容teabreak. 如果任何标题只包含茶,那么它不会出现在我的结果中。我在下面添加了代码,但它的获取也只包含一个单词行。

$query->where('title', 'LIKE', "%$search%");

就像如果我搜索Hello Tea break然后只获取那些包含所有三个单词的行。即hello, tea, break.

如果我搜索Hello Tea & break。在这种情况下,我将从我的代码中删除所有空格字符,并在下面的数组中添加代码。

$search = []
$search[0] = 'Hello';
$search[1] = 'Tea';
$search[2] = 'break'

标签: jquerylaravelsearcheloquent

解决方案


您可以实例化一个包含搜索字符串的数组,然后使用->orWhere()集合上的方法来查找它们。

$keywords = ['hello', 'tea', 'break'];
$result = $query->where(function ($query) use ($keywords) {
    foreach ($keywords as $keyword) {
       $query->orWhere('title', 'LIKE', "%$keyword%");
    }
});

推荐阅读