Cakephp WEB開発

[Cakephp4]特定のデータがあるかどうかを判定したい場合はexists()を活用しましょ

※本サイトはPR表記を含みます。

特定の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();
    }
}

目的が明確になり、すっきりしましたねー

-Cakephp, WEB開発
-