【PHP】CakePHP2.x系での別モデルの使用方法まとめ
こんにちは。
久々にCakePHPについての更新です。
今回は小ネタ的な感じですが、あるコントローラーから別のモデルを使いたいとき、あるいはあるモデルから別のモデルを使いたいときの方法をまとめておきます。
以下では、hogeコントローラー、hogeモデルにおいて別のモデルを使用する場合の書き方を書いていきます。
Controller内で別のモデルを使う
Controllerで別のモデルを使う場合は、2つの書き方があります。
これは使う用途によって分けるのが良さそうです。
Controller全体で別のモデルを使う場合
そのコントローラーにおいて全体的に別のモデルを使いたい場合は以下のように書きます。
<?php class hogeController extends AppController{ public $uses = array('Model1', 'Model2'); } ?>
Controllerの一部のみで別のモデルを使う
Controllerで特定の処理のときのみ別のモデルを使う場合は以下のように書きます。
<?php class hogeController extends AppController{ public function index(){ $this->loadModel('Model1'); $this->Model1->find('all'); } } ?>
この場合はその処理のときのみ指定したモデルが読み込まれるので、全体的に使う場合の書き方より処理が早くなりますし無駄もなくなります。
ですのでこの2種類の書き方をうまく使い分けるほうが良さそうです。
Model内で別のモデルを使う
Modelにメソッドを書いて値をControllerに渡すことは多いと思います。
そのためModel内で別のモデルを使いたくなることもあると思いますが、その場合は以下のように書きます。
<?php class hoge extends Appmodel{ App::import('Model', 'FooModel'); $this->FooModel= new FooModel; $this->FooModel->find('all'); } ?>
簡単ですね。
今回は以上です。
それでは。