Laravel 使用 LIKE 的查询没有 return 任何结果

Laravel query using LIKE does not return any result

大家好,我目前陷入了这个问题。我正在尝试在 DB 上搜索某些内容,但没有 return 任何结果。以下是我的代码。

搜索字符串 1 = 波士顿凯尔特人队

搜索字符串 2 = 波士顿凯尔特人队不能

DB post_title = 波士顿凯尔特人队不能让公牛队的失利影响艰难的伸展

查询

$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
            ->orderBy('post_date', 'desc')
            ->offset($offset)
            ->limit($limit)
            ->get();

搜索字符串 1 return是结果,但搜索字符串 2 不是。

我的第一个猜测是撇号可能是罪魁祸首 - 在 SQL 服务器中,连接运算符是“+”,因此您可能还想确保它是正确的。也许尝试删除撇号字符:

replace($search, '''', '')

Microsoft 中的四个单引号 SQL 是单引号的转义序列。

很简单,因为你搜索的是不同的字符串。

搜索字符串 2“.. 不能 ..”使用 直引号

'

DB post_title“..不能..”使用弯引号

供参考:Straight and curly quotes

试试下面的代码:

1) 由于 can't.

中的 ',您的代码可能会破坏字符串
$data = $searchPost->where('post_title', 'like', "%{$search}%")
            ->orderBy('post_date', 'desc')
            ->offset($offset)
            ->limit($limit)
            ->get();

之前遇到过同样的问题

试试这个

$data = $searchPost->where('post_title', 'like', '"%'.$search.'%"')
        ->orderBy('post_date', 'desc')
        ->offset($offset)
        ->limit($limit)
        ->get();

如您所见,前面有一个 " 开头的 % 和结尾的 % 之后的另一个。

如果你仔细看你不能在你的搜索和你的数据库中,'看起来不一样

不能 对比 不能

当'不一样时,肯定查不到。简单。

必须使用 str_replace 方法来更改撇号字符

$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);