CakePHPを勉強していると、様々な部分で現在のモデルで接続しているテーブルとは違うテーブルに接続したいときが出てくると思います。
CakePHPを勉強し始めたころは、チュートリアルのせいもあり、テーブルと同名のモデルからしかデータを取得出来ないと思いがちです。
僕もこの問題で3日間くらいはつまずきました。ただ慣れてしまえばとても簡単です。
例えば、postsテーブルにPostモデルでコードを書いていて、personsテーブルに接続したくなったときなどです。
そういう場合は
ClassRegistry::init
を使いましょう。
上の例の場合だと、以下のようにかけます。
class Posts extends AppModel { public $name = 'Post'; public function index(){ $Person = ClassRegistry::init('Person'); $data = $Person->find('all'); } }
ClassRegistry::initの返り値を上記のように変数に代入しておけば、あとは変数を使ってテーブルを操作出来ます。
もちろん以下のようにもかけます。
<?php class Posts extends AppModel { public $name = 'Post'; public function index(){ $data = ClassRegistry::init('Person')->find('all'); } }
参考にしてみてください。
何か質問や間違ってるとこなどありましたら、Facebookコメント欄、またはリプライ(@DAI199)までお願いします。
更新情報はFacebookページで!
ブログの更新、読んで役立つ他ブログの記事などを更新しています。