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 ) );