Laravel Eloquent和MySQL听起来很像,在Laravel的request input()和get()中有


Laravel Eloquent and MySQL SOUNDS LIKE and different in Laravel request input() and get()

我试图在我的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].'%');