CakePHP 5.x で新しいアプリケーションを開発して、いざ本番環境に初めてdeployしたところ、以下のようなエラーに遭遇しました。
error: [Cake\ORM\Exception\MissingTableClassException] Table class for alias `{テーブル名}` could not be found
この記事は、このエラーの原因のうち、筆者が遭遇したものについてのメモです。
長いので3行まとめ
- Macのデフォルトのような case-insensitive なボリュームで開発されたコードは、case-sensitive 環境では動作しないことがある(PHPの auto_load が)
- CakePHPの
TableRegistry::getTableLocator()->get();
が本来想定しているのは、テーブル名ではなく、Tableクラスのクラス名から「Table」を取り除いた文字列(documentから読み取れる情報) - そんな文字列はバグの原因になるから渡したくねーよ、という私のような人は
FooBarTable::class
みたいな形で渡すと幸せになれる🥰