
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のように日時更新されますです。