共通の処理を書くモデルを別途用意して、それを各モデルからインポートする。
<?php
App::uses('AppModel', 'Model');
class DrinkModel extends AppModel {
// 共通の処理
}
各モデル
<?php
App::import('Model', 'DrinkModel');
class Coffee extends DrinkModel {
// 個別の処理
}
基本的にはこれだけ。
まずは共通の処理を書いていく。
例えば、どのモデルに対しても登録日時createdで降順にfindしたいってことだったら、共通モデルの方に、
public function beforeFind($queryData) {
$queryData['order'][] = 'created DESC';
return $queryData;
}
といれておく。Coffeeモデルについてだけは、追加でidで昇順にしたかったら、Coffee.phpの方に
public function beforeFind($queryData) {
$queryData = parent::beforeFind($queryData);
$queryData['order'][] = 'id';
return $queryData;
}
と追加すればいい。コントローラ側からソート順を指定したい、とかだったら、共通モデルの方に、
public $sort = '';
public function beforeFind($queryData) {
$queryData['order'][] = 'created ' . $this->sort;
return $queryData;
}
として、コントローラで、
$this->Coffee->sort = 'DESC';
とセットしてやればよい。