自分へのメモがわり.
通常は Model 名 Hoge に対して Controller 名を HogesController とすればネーミングルールで自動的にマッピングされますね.
けど,Controller 内でデフォルトとは異なる Model を使いたい時がありますよね.その時には
class HogehogesController extends AppController {
public function initialize() {
parent::initialize();
$this->loadModel('Hoge');
}
な感じに記述すれば,$this->Hoge で使えますね.Cookbook 中ではhttps://book.cakephp.org/3.0/en/controllers.html#loading-additional-models のあたりかな.まぁ
use Cake\ORM\TableRegistry;
class HogehogesController extends AppController {
public function initialize() {
parent::initialize();
$this->Hoge = TableRegistry::get('Hoge');
}
でも良いのかな.また,ピンポイント的に使いたい時には,
use Cake\ORM\TableRegistry;
を先頭に書いておいて,使いたいところで
$hoge = TableRegistry::get('Hoge');
とすれば直後に
$query = $hoge->find()->...
な感じで引っ張れますね.本当にピンポンとなら使いたいとこだけで
$query = TableRegistry::get('Hoge')->find()->...
でも良いでしょうけどね.
Cookbook では loadModel の記述が使われてるってことは,Controller 全体で使いたい時には loadModel するのが推奨ってことなのかな?
でも,ORM のページ (https://book.cakephp.org/3.0/en/orm.html) には最後の記述の方が載っているからどちらでも良いってことか?
本当は cakephp のコードの中までは追っかければ良いんだろうけど...今のとことはそこまで見てないです.はい.
![]() |
PHPフレームワーク CakePHP 3入門 |
掌田 津耶乃 | |
秀和システム |