2017-05-05 96 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(); 

注意,?是一个独立的价值。查询执行时将会添加引号。