2017-08-28 21 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