2017-05-05 92 views
0

我正在使用Laravel 5.0。Laravel 5.0 whereRaw concat like

我有這樣的:

return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%?%'", ['test'])->get(); 

並返回[]

當我將其更改爲:

return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%test%'")->get(); 

它返回與3個用戶的陣列。

我查詢之前添加了這個:

\DB::listen(function($sql, $bindings) { 
    var_dump($sql); 
    var_dump($bindings); 
}); 

我也得到:

string(73) "select * from `users` where CONCAT(first_name, ' ', last_name) LIKE '%?%'" 
array(1) { 
    [0]=> 
    string(4) "test" 
} 

我想不出什麼我做錯了。

+0

它應該返回多少用戶? –

+0

我期待3個用戶。我想我剛剛得到了... – ajon

+0

很高興知道它已完成 –

回答

0

您不應該在?佔位符周圍使用引號,它不應該是較長字符串的一部分。準備好的語句用引號和/或反引號括起來。

這工作:

return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ['%test%'])->get(); 

注意,?是一個獨立的價值。查詢執行時將會添加引號。