[CakePHP5]Modelイベントがなくなってる?

レコードの保存時などのイベント取得でCakePHP4以前ではafterSave()とかbeforeFind()とか、そいういうメソッドをTableクラスに定義するとそこでイベントを受け取ることができました。
ですが、CakePHP5でやってみたんですが存在しないと言われてしまいます。

リファレンスにはあるって書いてあるんですよね。
https://book.cakephp.org/5/ja/orm/table-objects.html#beforefind
もちろん英語版も書いてある。
https://book.cakephp.org/5/en/orm/table-objects.html#event-list

移行ガイドにも特に言及はない。
いろいろ試行錯誤した結果、どうも、イベントを使うらしい。
ヒントがここにあった。

ということで、こんな感じに、initialize()メソッドの中で登録すればOKみたいです。。


namespace App\Model\Table;

use Cake\ORM\Table;

class MyTable extends Table
{
    public $actsAs = [];

    public function initialize(array $config): void
    {
        parent::initialize($config);
        $this->getEventManager()->on('Model.afterSave', function($event, $entity){
            // 保存後の処理
        });
    }
}
Amazon.co.jp
タイトルとURLをコピーしました