2012年9月12日水曜日

[CakePHP]modelを二つ以上使用する場合の注意点

始め、コントローラにある$usesで使用するモデルを以下みたいに
設定してあげればよいと考えた。

$uses = array('Theme','Tag','Item');

しかし、これだと以下の問題が発生した。

・scaffoldの画面がおかしくなる。
 「New Tag」ボタンを押してたのに、なぜか「New Theme」画面に遷移したり。

・コントローラの頭で定義しなければ有効にならず、
 アクションの中で変更することができない。
 
 scaffoldの画面がおかしくなるため、アクションの中で動的に設定される
 ものにすれば大丈夫だろうと思って、アクション内で以下のように設定した。

$this->uses = array('Theme','Tag','Item');

ところが、やはり有効になっておらず目的のモデルが使用できなかった。

なので、調べていたところ以下のサイトでloadModelを使えばよいというのが
わかった。

Modelを2個以上読み込む場合は、$usesを使わない方がスピードアップする


$this->loadModel('Tag');

これならば、scaffoldの画面も壊れず、アクション内でも使用できる。

※CakePHPのバージョンはcakephp-cakephp-1.3.15-9-gacd25c3.zip

0 件のコメント:

コメントを投稿