cakephpのelementはテンプレートのみ。cellはロジックとテンプレート。helperはロジックのみ。というルールで使い分けてみます。https://medium.com/anuix/why-use-cells-in-cakephp-4-and-how-287fe661185b
interfaceにentityのvirtual field。phpcsに怒。Public method name "ImageInterface::_getThumbnailPath" must not be prefixed with underscore
belongsToManyの絞り込みにはmatching()かinnerJoinWith()を使います https://book.cakephp.org/3/ja/orm/retrieving-data-and-resultsets.html#matching-joins クエリを組み立てるのに慣れてきました。結合用のテーブルを間に挟んでいます。特に気にしなくてよいみたいです。
存在しないメソッドをinterfaceとして定義するまではよかった。処理の実装で迷った。なるべくエンティティのカスタムプロパティへ閉じ込めようとした。CakePHPのMVC周りで用意している機能へ配置するか迷った。たとえばComponentやHelperやBehavior。
CakePHP2からCakePHP4への移行も、いよいよ佳境に差し掛かってきました。管理画面にビジネスロジックは皆無でした。表示側でDBの項目を利用している箇所がたくさんあります。ChatGPTでどれだけ楽できるか楽しみです。