在获得laravel elequent结果之前删除空格

时间:2017-08-28 06:22:35

标签: php laravel

我想比较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();

3 个答案:

答案 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)

我会说:

  1. 如果要将其他数据保存到您真正需要的数据,则会出现问题。我的意思是你可以轻松地保存John Doe并且它很容易,也让生活变得轻松。

  2. 您可以使用带有whereRaw()方法的Raw sql查询:

    User::whereRaw("REPLACE(`name`, ' ', '') = ? ", $name)->first();
    
  3. REPLACE()删除所有空格,没有空格。了解有关mysql REPLACE() here

    的更多信息