Cakephp1の時代の名残から、歴史の長いシステムなどでは保存する際にデータベースカラムの名前は、新規: createdと更新: updated という形になっている場合があります。(Cakephp1あんましらんけど)
Cakephp2以降?からは新規は変わらないものの、更新時は公式ドキュメント上、modifiedというカラム名になっていますす。
Cakephpを4に移行する際、この辺りを考慮に入れておかないと「自動更新が有効になっていない状態」になります。
Cakephp4ではビヘイビアのTimestampを利用することで、その役目を担います。その上でupdatedを更新時の自動保存に対応させます。
具体的なコードは以下です。
<?php declare(strict_types=1); namespace App\Model\Table; use Cake\ORM\Table; use Cake\Validation\Validator; class HogesTable extends Table { /** * テーブルインスタンス初期化(コンストラクタの後に呼ばれる) * * @param array $config 特に設定なし * @return void */ public function initialize(array $config): void { parent::initialize($config); $this->addBehavior('Timestamp', [ 'events' => [ 'Model.beforeSave' => [ 'created' => 'new', 'updated' => 'always', ], ], ]); } }
$this->addBehavior('Timestamp')
のeventsオプションを指定することで、更新時などにupdatedがmodifiedのように日時更新されますです。