クエリビルダを使用して開発していると頻繁に出くわす例外エラーがQueryExceptionです。
その中でも有名なInvalid parameter numberについてご紹介致します。

この例外はクエリビルダにバインドした変数の数と、渡したパラメーターの数が異なるときに発生します。
よくあるのは次の順番でwhereを2回使用してしまうパターンです。

 

この場合、1回目のwhereはなかったことになってしまいますので
Invalid parameter number!!と怒られてしまいます。

正しくは次のようにandWhereを使用します。

1つのチェーンになっていればまず気づくのですが、ProductRepositoryのgetQueryBuilderBySearchDataのように
ユーザーが指定した条件によって様々切り分けが必要な場合、チェーンが分断されて気づきにくくなりミスをしてしまいがちです。

 

 

EC-CUBEで開発をされている方はぜひご確認ください。

関連するカスタマイズ

メーカープラグインのメーカー名で商品を絞り込む方法... メーカープラグインを導入した場合、メーカー名で商品を絞り込みたくなることがあると思います。 この検索を実現するにはプラグインのテーブルを商品のテーブルにjoinします。 メーカープラグインはProductMakerとMakerというエンティティクラスを保有しており、これらのクラスを使用し...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...
メーカープラグインのメーカー一覧を取得する方法... メーカープラグインを使用される方が多いと思います。 メーカーの一覧を表示したい場合は次のようにメーカープラグインのレポジトリクラスでfindByすることで取得が可能です。 Controllerなどで使える実際のコード 全件取得するのでfindByの第1引数は空の配列、第2引数はソート順...
基本税率を切り捨て、切り上げ、四捨五入に変更... 開発メンバー全員のルールを揃えておくことが重要です。 dtb_tax_ruleテーブルのcalc_ruleの設定値は次の表の通りです。 calc_rule 方式 1 四捨五入 2 切り捨て 3 切り上げ これをマイグレーションで...