
特定の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();
}
}
目的が明確になり、すっきりしましたねー