CakePHP2.xにおける重要関数

CakePHP2.xではDB操作系の関数で重要なものが3つある。
これらがCakephp2.xにてDBを操作する為の最低限必要な関数である。

find()

対象を検索する。Controllerに記述。亜種として単一フィールドを対象にして検索できるfindBy()などがある。

$this->CakeSample->find($id);

save()

対象を保存/挿入する。Controllerに記述。亜種としてトランザクション処理に使えるsaveAll()などがある。

$this->CakeSample->save($id);

delete()

対象を削除する。

$this->Unit->delete($id);

上記3つ以外にも重要だと思った機能を以下に羅列。

loadModel()

Controllerを別のModelと関連付けることができる。Controllerに記述。突発的に他のモデルを読み込みたいときなどに利用する。

$this->loadModel('Model');

$usesに複数モデルを読み込ませておかなければいけない点に注意。
’Model’には読み込みたいモデル名を記述する。

public $uses = array('Foo', 'Bar', 'Baz');
$this->loadModel('Foo');

setDataSource()

Modelを別のDBと関連付ける。Controllerに記述。複数DBに書き込みたい場合などに利用する。

$this->Model->setDataSource('database');

$usesに複数モデルを読み込ませておかなければいけない点に注意。
’CakeSample’には対象のモデル名を記述する。
’database’にはdetabase.phpかbootstrap.phpで作ったデータベースの変数名を記述する。

public $uses = array('Foo', 'Bar', 'Baz');
$this->Foo->setDataSource('development');

$this->modelClass = null;

ControllerとModelの関連付けを解除する。Controllerに記述。

$this->modelClass = null;

アソシエーション

レスポンスに他のDBの内容を含めたり、いろいろできる。Modelに記述。

public $belongsTo = array(
    'CakeSample' => array(
        'className' => 'CakeSample',
        'foreignKey'=> 'id'
    )
);

アソシエーションの動的解除

アソシエーションを解除することができる。メソッドによってレスポンスを変えたい時に便利。Controllerに記述。

$this->CakeSample->unbindModel(
    array('hasAndBelongsToMany' => array('CakeSample2')),
    false
);

カウンターキャッシュ

アソシエーションで関連付けられたテーブルのレコード数を自動カウントする。Modelに記述。

 public $belongsTo = array(
     'CakeSample' =>array(
         'counterCache' => true
     )
 );