2017-07-28 15 views
1

をパラメータを追加私のコードです:それは働いていないLaravelは、私は、パラメータを割り当てるにはいくつかの方法をしましたが、それはここで</p> <p>を働いていない「演算子と「%のように使用して、生のクエリで

$sqlDefault = "Select * from histories as h where h.status like % :status %"; 

return DB::select(DB::raw($sqlDefault), ['status' => $status]); 

私は別のを試してみてください割り当てるための方法:

'%:status%'または'%':status'%'

しかし、それは

動作していません

今私は、パラメータを使用しない、質問が「%」とのオペレータのように使用しているとき、私は、パラメータを使用する方法である

$sqlDefault = "Select * from histories as h where h.status like '%$status%'";

perfectlly働いていたのですか?

答えて

2

準備完了ステートメントのプレースホルダーはの代わりにstringの値と見なされるため、'%...%'内では機能しません。プレースホルダを直接入力してから"%{$variable}%"などの値を渡す必要があります。あなたはクエリが実行されたか確認したい場合は

あなたは dd(DB::getQueryLog())を使用することができ、この

$sql = "SELECT * FROM `histories` AS h WHERE `h`.`status` LIKE :status"; 

return DB::select($sql, [ 'status' => "%{$status}%" ]); 
+0

おかげで、それは何を示していない、まだです。 私は '$ sqlを=「' histories' WHERE 'LIKE status' SELECT * FROM:状態」に変更;'と右の値を検索し、それは私はそれがだ、私はので、機能に参加使用し、私のような状況では を働いていますが、 '' histories.statusです''、それは雷ですか? –

+0

@VuHoangDuc私は自分の答えを更新しました。私は{} –

+0

感謝をしようと、それはperfectlly働いています。 –

0

を試してみてください。

これを試してみてください:

$result = DB::table('histories')->where('status', 'like', '%' . $status . '%')->get(); 
0

が割り当てパラメータ

DB::table('histories') 
    ->where('status' , 'like', '%'. $status .%') 
    ->get(); 

それとも、トップ

use App/Histories;を追加し、この

のような直接履歴アプリクラスを使用することができますし、せずにこれを試してみてくださいこのようなクエリを使用する

Histories::where('status' , 'like', '%'. $status .%')->get(); 
+0

ありがとう!私は今、それを使用していますが、私は% –

2

'%'.$status.'%'

$sqlDefault = "Select * from histories as h where h.status like :status "; 

return DB::select(DB::raw($sqlDefault,['status' => '%'.$status.'%'])); 

またはちょうどのみを選択使用して$statusを置き換え:親切返信用

return = DB::select(sqlDefault , ['status' => '%'.$status.'%']); 
+0

おかげでパラメーターassignための解決策を見つけたい、それがperfectlly働いています –

関連する問題

 関連する問題