[CakePHP]IN句を使う場合はwhere()を使うな!whereInList()を使え

CakePHP

通常、IN句を使って指定のIDのレコード一覧を取ってくるには

$this->Users->find('all')->whre(['Users.id IN'=>$userList]);

とすればよいのですが、$userListが空の場合エラーになってしまいます。
従来は$userListの存在チェックをしていたのですが、そんなことしなくてもこうすれば勝手によろしくやってくれます。

$this->Users->find('all')->whreInList('Users.id',$userList);

いままで知らなかった―!

ただし、$userList はarrayである必要があります。whereを使う場合はサブクエリが使えるのでQueryを渡せますが、こちらは配列のみなので注意が必要です。
想定される件数によってはwhereのほうが良いかもしれません。

コメント

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