[英]Laravel query using LIKE does not return any result
嗨,大家好,我目前正陷入这个问题 我正在尝试在数据库上搜索某些内容,但未返回任何结果。 以下是我的代码。
搜索字符串1 =波士顿凯尔特人队
搜索字符串2 =波士顿凯尔特人队无法
DB post_title =波士顿凯尔特人队不能让公牛的损失影响难以缓解
查询
$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
搜索字符串1返回结果,但搜索字符串2不返回结果。
我的第一个猜测是可能要引起撇号-在SQL Server中,串联运算符为“ +”,因此您可能还想确保这是正确的。 也许尝试使用以下命令删除撇号字符:
replace($ search,'''',))
Microsoft SQL中的四个单引号是一个单引号的转义序列。
尝试以下代码:
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();
如您所见,在%的开头有一个“,而在%的末尾有另一个。
如果您仔细查看无法搜索和数据库,则'
看起来会不同
不能vs不能
如果'不相同,请确保无法搜索。 简单。
必须使用str_replace方法更改撇号字符
$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.