16 Apr 2015

[CakePHP2]モデル内で別のモデルを参照する(追記あり)

別のファイルを参照するのは3通りあるそうです。
参照元:
http://stackoverflow.com/questions/980556/can-i-use-one-model-inside-of-a-different-model-in-cakephp
から説明を抜粋。
App::import() ファイルを見つけてインポートします(それだけしかしません)。クラスを使用するにはインスタンスを作製する必要があります。 ClassRegistry::init() ファイルをロードして、インスタンスを作製します。何かをロードするにはimportよりもベターです。なぜならCakePHPが通常呼び出しの際に内部で行う手続きも実行されるからです。またクラスネームにエイリアスをつけることができます。便利です。 Controller::loadModel() 前述の ClassRegistry::init() を使用してモデルをロードします。$persistModel を使用したキャッシングにも対応します(する予定です?)。コントローラ内部でのみ動作します。
と上記では書いてありますが、Model内でも Controller::loadModelは作動する模様。

Controller::loadModel('AnotherModel');
$data = $this->AnotherModel->read(null, $id);
(追記7/7)やっぱりだめっぽい。以下のやりかたが良いようです。
$anotherModel = ClassRegistry::init('AnotherModel');
data = $anotherModel->read(null, $id);