使用LIKE的Laravel查询不会返回任何结果

时间:2017-12-14 02:54:38

标签: php sql laravel orm backend

嗨,大家好,我目前陷入了这个问题。我试图在数据库上搜索某些内容并且没有返回任何结果。以下是我的代码。

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

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

DB post_title =波士顿凯尔特人队不能让公牛队的损失影响困难的拉伸

QUERY

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

搜索字符串1返回结果,但搜索字符串2不返回。

6 个答案:

答案 0 :(得分:2)

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

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

  

DB post_title“..不能..”使用 Curly Quotes

  

供参考:Straight and curly quotes

答案 1 :(得分:0)

我的第一个猜测是撇号可能是罪魁祸首 - 在SQL Server中,连接运算符是" +"所以你也可能想确保这是正确的。也许尝试删除一个撇号字符:

替换($ search,'''''')

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

答案 2 :(得分:0)

请尝试以下代码:

1)由于'中的can't,您的代码可能会破坏字符串。

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

答案 3 :(得分:0)

之前遇到同样的问题

试试这个

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

你可以看到有一个“之前 开头的%和最后的%之后。

答案 4 :(得分:0)

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

无法 VS 不能

当'不相同时,确定无法搜索。简单。

答案 5 :(得分:0)

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

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