2017-05-05 14 views
0

私はLaravel 5.0を使用しています。Laravel 5.0 where Raw 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(); 

お知らせ。クエリが実行されると、引用符が追加されます。