CakePHPでモデルから他のモデルを呼び出す方法

CakePHPで、モデルから他のモデルのメソッドなどを呼び出したい時、よくやる方法として、モデル内で 他のモデルをnew して使う方法です。

例えば、Postモデル内で、Messageモデルのメソッドを呼ぶ場合などは

以下のようにするのが良く見かける方法です。

<?php

class Post extends AppModel
{

・・・・

function getTotal(){

    //Messageモデルをnew
    $objMessage = new Message();

    //Messageモデルのfindメソッドを呼び出して処理する。
    $ret =  $objMessage->find('all',array(~~~));

}

が、しかし、アソシエーションしているモデルについては、newする必要なく簡単に呼び出せます。

先ほどの例と同じことをやるのに以下の方法で簡単にできてしまいます。

<?php

class Post extends AppModel
{

・・・・

  function getTotal(){

    //Messageモデルのfindメソッドを呼び出して処理する。
    $ret =  $this->Message->find('all',array(~~~));

}

これは、belogs_toやhas_manyなどPostモデルとMessageモデルがアソシエーション関係にあれば使えます。

あまり、こうゆう記事を見かけなかったので書いておきます。

結構モデル間でのメソッド呼び出しは使うのでCakePHPを使う際、この辺は知っておくと便利です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です