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();

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