特定のIDがあれば、それを基に検索し、該当データが存在すれば、次の処理をおこなう。
こうしたケースって多々あります。
if (!empty($data['id'])) { $entity = $this->Models->find() ->where(['id' => $data['id']]) ->first(); if (empty($entity)) { throw new BadRequestException(); } // $entityが存在する場合の処理が続く($entityは利用するはず) }
この場合、$entityがない場合は、BadRequestException()
を投げて終了します。他の方法としてはfirstOrFail()
を使って端的になかった場合の処理を記述することも可能です。
で、$entityをが存在するか(特定のデータが存在するかどうか)だけのためにfirst()
を使うのであれば、exists()
を使うことをお勧めします。(目的に沿っている使い方として)
該当データが存在するか否かではexists()でOK
if (!empty($data['id'])) { $existsCond = ['id' => $data['id']]; if (!$this->Models->exists($existsCond)) { throw new BadRequestException(); } }
目的が明確になり、すっきりしましたねー