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

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

 

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

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

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

 

 

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