我试图在我的Laravel搜索查询使用MySQL SOUNDS LIKE功能实现一些灵活性。我的查询MySQL 'LIKE'函数工作得很好,看起来像这样。
public function search(Request $request)
{
$search = $this->posts->where(function($query) use($request) {
$keywords = $request->keywords;
$keywords = explode(' ', $keywords);
for($x = 0; $x < count($keywords); $x++)
{
$query->orWhere('title', 'LIKE', '%'.$keywords[$x].'%');
}
})->orderBy('created_at', 'desc')->paginate(12);
.....
}
然后我尝试在我的查询中添加'SOUNDS LIKE'
:
$query->orWhere('title', 'SOUNDS LIKE', '%'.$keywords[$x].'%');
但这不起作用。不返回任何结果。我做错了什么?
此外,在我的功能中,我使用$request->keywords
而没有input()
或get()
。
$request->keywords;
$request->input('keywords');
$request->get('keywords');
我的方法不安全吗?这种方法中哪一种最安全?我想知道这几个请求方法有什么不同,最好的解决方案是什么?
您可以尝试删除'%'字符,如:
$query->orWhere('title', 'SOUNDS LIKE', $keywords[$x].'%');