Cakephp PHP WEB開発

【Cakephp2→4】afterSave時のcreate引数はisNew()で代替

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

Cake2からCake4への移行作業にて、afterSave() の仕様の違いについてです。

Cake2: afterSave()

afterSave(boolean $created, array $options = array())

ブール値 $created
この保存によって新しいレコードが作成された場合は True

引用: Cakephp2公式ドキュメント

というようにAPIドキュメントにあり、Cake2では新規保存と更新の判定は容易な形になっています。
Cake4は、$created 自体の引数ではなくなり、代替として isNew() メソッドを利用すればOKです。

Cake4: afterSave()

use ArrayObject;
use Cake\Datasource\EntityInterface;
use Cake\Event\EventInterface;

// クラス内にて
public function afterSave(EventInterface $event, EntityInterface $entity, ArrayObject $options): void
{
    if ($entity->isNew()) {
        // 新規保存の場合の処理
    } else {
        // 更新の場合の処理
    }
}

$entity->isNew() を利用すれば、新規保存の場合、true を返してくれます。

これで、新規保存の場合と更新の場合の処理を切り分けることができますね。

-Cakephp, PHP, WEB開発
-