我想比较laravel controller中的搜索结果。
当用户输入名称并进行搜索时。在我的控制器中,它将删除输入空格并比较从数据库中检索的数据。
提交的用户是John Doe
preg_match_all('/\@([^\s\.]+)/', $request->name, $matches);
删除空格成为JohnDoe。然后用
获取数据$user = User::where('name', $name)->first();
我希望在比较结果之前删除名称列空格。例如,从数据库列获取的数据是John Doe。如何删除空格并进行比较。
$user = User::where('John Doe', $matches)->first();
答案 0 :(得分:0)
尝试使用whereRaw
:
$user = User::whereRaw("name REGEXP 'your_regex'")->first();
答案 1 :(得分:0)
我发现这种方法可行。
$user = User::where('name','%'.$name.'%')
->orWhere('name','LIKE','%'.preg_replace('/\@([^\s\.]+)/', '', $name).'%')->first();
答案 2 :(得分:0)
我会说:
如果要将其他数据保存到您真正需要的数据,则会出现问题。我的意思是你可以轻松地保存John Doe并且它很容易,也让生活变得轻松。
您可以使用带有whereRaw()
方法的Raw sql查询:
User::whereRaw("REPLACE(`name`, ' ', '') = ? ", $name)->first();
REPLACE()
删除所有空格,没有空格。了解有关mysql REPLACE()
here