あるコントローラーから情報を取り出して、その情報から紐づくサブ情報を収集し一覧表示させたい機能が発生し、そのサブ情報用のDBのテーブルを作成。

コントローラーに紐づくテーブルではなく、別のテーブルの情報を取り出す場合、別テーブルを触れるよう宣言が必要になることを良く忘れるからまず記録します。

例えば、samplesというテーブルから情報を取り出したい場合、

DBでsamplesというテーブルを作成し、いくつかのカラムを追加。

use Cake\ORM\TableRegistry; ← 追加

public function initialize(): void
{
parent::initialize();
$this->samples = TableRegistry::get('games'); ← 追加
}

という形が先に必要で、あとはコントロール内のアクションで何かしらのプログラムを書けばOK。

しかし、実際に構築しブラウザで更新すると以下のエラーが表示しました。

Table class for alias samples could not be found.

テーブルは作ったし、読み込むための宣言もしたんですが、認識できてないというのはなぜかという悩んでいたんですが、解決内容は、モデルを用意していないという事でした。

いつもはbakeでモデル、コントローラー、ビューを一斉にコマンドで作成していただけに、途中で追加したときには忘れていました。

必要なものだけ生成すればいいんですが、後々コピペで楽できるかもという保険のために、samplesに対応するファイルもコマンドで作成して、その後はちゃんとデータを取り出せました。