CakePHP: 対象データがなかった場合のFindとFindAllにおける戻り値の違い
2008/02/29 11:27 am CakePHPCakePHP で使うモデルのメソッド Find と FindAll で、対象データがなかった場合は戻り値が少し違う。
Find と FindBy の場合、対象データがなかったら false が返ってくる。
それに対して FindAll と FindAllByの場合は false ではなく空の配列が返ってくる。
ということはどういうことかというと、
if (!$this->User->FindAllById($id)) {
//対象データがなかった場合の処理
}
なら期待どおり動くが
if ($this->User->FindAllById($id) === false) {
//対象データがなかった場合の処理
}
ではダメということ。
Find, FindBy なら false が返ってくるからどっちでもいける。
対象データの存在確認をするなら findCount で調べればいいわけで、そのために findAll を使うことはないかもしれないけど、例えば
$users = $this->User->FindAllByGroupId($group_id);
if ($users === false) {
//対象データがなかった場合の処理
}
は、ついやってしまいそうな気がする。しない?