Laravel 5.0 whereRaw concat 喜欢
Laravel 5.0 whereRaw concat like
我正在使用 Laravel 5.0。
我有这个:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%?%'", ['test'])->get();
它 returns []
.
当我将其更改为:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%test%'")->get();
它returns一个有 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"
}
我不知道我做错了什么。
您不应在 ?
占位符周围使用引号,并且它不应是较长字符串的一部分。准备好的语句用引号 and/or 反引号将值括起来。
这个有效:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ['%test%'])->get();
请注意 ?
是一个独立的值。执行查询时将添加引号。
我正在使用 Laravel 5.0。
我有这个:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%?%'", ['test'])->get();
它 returns []
.
当我将其更改为:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE '%test%'")->get();
它returns一个有 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"
}
我不知道我做错了什么。
您不应在 ?
占位符周围使用引号,并且它不应是较长字符串的一部分。准备好的语句用引号 and/or 反引号将值括起来。
这个有效:
return User::whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ['%test%'])->get();
请注意 ?
是一个独立的值。执行查询时将添加引号。