Laravel クエリビルダの whereRaw メソッドでプレースホルダを使う
Laravel 5.5 のドキュメントには記載があるのに(日本語版、英語版)、それ以前のドキュメントには、なぜか記載がないのですが、クエリビルダの whereRaw メソッドでプレースホルダを使うときは、名前付きプレースホルダではなく、疑問符プレースホルダを使う必要があります。
$orders = DB::table('orders') ->whereRaw('price > IF(state = "TX", ?, 100)', [200]) ->get();
名前付きプレースホルダを使うと、以下のエラーが出ます
Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters'
こちらでもう少し詳しく説明しました。gn-office.pro