うめぼしジョイスティック - ivoice

CakePHP、JavaScript、jQuery等のプログラミングについて書いていきます 思考は、うめぼしのように硬く、そして柔らかく。

CakePHP2系でデータ読み出しが遅いときはコントローラーのusesを見直してみよう。

これはCakePHP2系でとても重要なことです。
リレーションの順番に関することです。


例えば、

Sample
Dog

Apple
という3つのデータベースをリレーションさせていたとして、

 

コントローラーSamplesControllerで

DogとAppleのモデルを読み出したい場合は

 
App::uses('AppController', 'Controller');

class SamplesController extends AppController{

           public $uses = array( 'Sample', 'Dog', 'Apple');

 

           public function index(){

           }



}




このようにして主役のコントローラーでは、必ず先頭で(一番目に)今の自分のモデル(ここではsampleモデル)をusesで読み込んで下さい。
もしDogとAppleの関係性が、Dogが親になるようなモデルの場合は
DogをAppleよりも先に読みだして下さい。
宣言の順番が間違っていると、処理が異常に遅くなります。

 

以上、usesの使い方の注意点でした。