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)までお願いします。