2016-07-25 25 views
1

私はLaravel 5.1を使用していますへのバインディングを追加し、次のような単純なクエリはありません。Laravel(5.1)クエリビルダが適切に選択し、生の声明

$searchTerm = 'random word'; 

$subQuery = DB::table('userprofile')->selectRaw(" 
    user_id, 
    MATCH(first_name, last_name) AGAINST('?*' IN BOOLEAN MODE) AS search_score 
") 
->addBinding($searchTerm) 
->get(); 

をこれがを返しませんが、私は直接交換する場合引用符は

... AGAINST('$searchTerm*' IN BOOLEAN MODE) ... 

となります。私は

DB::getQueryLog(); 

を行う場合は、私はそうバインディングが追加されるべきであるかのようにだが、彼らはありませんよ

"query" => "select `user_id`, MATCH(first_name, last_name) AGAINST('?*' IN BOOLEAN MODE) AS search_score from `userprofile`" 
"bindings" => array:1 [ 
    0 => "random word" 
] 

を取得します。私はselect、selectRaw、 - > setBindings、 - > addBinding($ searchTerm、['select'])などの他の場所で提案されているバリエーションを試しました。これらのバインディングはどのように動作させることができますか?

答えて

1

このような正規表現全体を置き換えてみましたか?

$searchTerm = 'random word*'; 

$subQuery = DB::table('userprofile')->selectRaw(" 
    user_id, 
    MATCH(first_name, last_name) AGAINST(? IN BOOLEAN MODE) AS search_score 
") 
->addBinding($searchTerm) 
->get(); 

このように、laravelが追加すると、余分な引用符が追加されない可能性があります。

+0

これだけです!今はとても分かりやすいようです...ありがとうございました! –

関連する問題