2017-08-28 202 views
0

我想比较laravel控制器中的搜索结果。在得到结果之前删除空格laravel elequent

当用户输入名称和搜索。在我的控制器中,它将删除输入空间并比较从数据库中检索的数据。

提交的用户是李四

preg_match_all('/\@([^\s\.]+)/', $request->name, $matches); 

删除空格变得JOHNDOE。然后获取数据与

$user = User::where('name', $name)->first(); 

而且我想比较结果之前删除名称列空间。例如,从数据库列获得的数据是John Doe。如何删除空格并进行比较。 $user = User::where('John Doe', $matches)->first();

+0

你的意思是你的数据库表列中有'John Doe'或'name'列的值之一是'John Doe'吗? –

+0

@OmisakinOluwatobi'name'栏的其中一个值是'John Doe' – masterhunter

回答

0

尝试使用whereRaw

$user = User::whereRaw("name REGEXP 'your_regex'")->first(); 
0

我发现,这种方法可能是工作。

$user = User::where('name','%'.$name.'%') 
        ->orWhere('name','LIKE','%'.preg_replace('/\@([^\s\.]+)/', '', $name).'%')->first(); 
0

嗯,我会说:

  1. 有一个问题,如果您要保存不同的数据到一个你真正需要的。我的意思是你可以轻松地节省JohnDoe及其简单,并且使生活变得轻松。

  2. 您可以使用原始的SQL查询与whereRaw()方法,例如:

    User::whereRaw("REPLACE(`name`, ' ', '') = ? ", $name)->first(); 
    

REPLACE()删除所有空格和不带空格。查找更多关于mysql的信息REPLACE()here