[CakePHP4] Impossible to generate condition with empty list of values for field ってなに

Impossible to generate condition with empty list of values for field (モデル名.カラム名)
こんなエラーが発生しましたが、コードの位置と発生した場所が違うのでいまいちわかりにくい。
日本語で解説した資料がなかったのでメモとして残しておきます。

このエラーの原因は、クエリビルダでIN句に空の配列を渡したことが原因です。
こんな感じ

$user_list=[];
$query->where(['Users.id'=>$user_list])

サブクエリであれば結果が空でも大丈夫なんですが、配列の場合はダメなんですよね。
回避策としては
サブクエリにする
リストが空の場合は実行しないようにする
初期値で$user_list=[0] みたいな感じで、あり得ない値をとりあえず入れておく

という方法が考えられます。

タイトルとURLをコピーしました