smartyばっかりだったのでなかなかフレームワークには馴染めませんでしたが、慣れてしまうとsmartyより便利ですね。
コードの量が減った気がします。
さてさて、CakePHPではデータベースのprefixを指定して管理することができます。
prefixと言うと、日本語なら「接頭語」って感じですかね・・例えば、cake_items、cake_prices、cake_details・・・という感じで、頭に必ずついてる「cake_」がprefixになります。
この共通の接頭語を app/Config/database.php のDB設定欄 prefixの値で設定することで、prefixを省略してContrllerの名前を付けたりできるわけです。
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'login_id',
'password' => 'login_pass',
'database' => 'sample',
'prefix' => 'cake_',
'encoding' => 'utf8',
);
1つのデータベースでWordpressやCakePHPや何だかんだと複数のアプリを管理している場合に便利ですね。
ところが今回のデータベースは、CakePHP上で扱うデータベースだけど接頭語の種類が複数あるというタイプでした。
例えば、マスターテーブル、アプリ用テーブル、設定用テーブルと種類分けされていて、それぞれに接頭語があるという感じです。
例えば、mst_items、app_histories、st_applications・・といった感じですね。
この場合、prefixを指定せずに、modelの中で使用するテーブル名を設定してもいいと思います。
/**
* app_historiesテーブル
*/
class History extends AppModel {
public $name = 'History';
public $useTable = 'app_histories';
}
でも、今回は、大半がアプリ用テーブルだったので、prefixには 'app_' を設定しています。
この場合、マスターテーブル等のモデルをどうするかと言うと、
/**
* mst_itemsテーブル
*/
public MstItem extends AppModel {
public $name = 'MstItem';
public $tablePrefix = '';
}
として、$tabelPrefix を空白に設定してやるとOKです。
マスターテーブルと分かるように、あえてMstItemという名前にしてますが、Itemとして管理したい場合は、$tablePrefixをmst_にすればいいんじゃないかな。これはやってません。
public Item extends AppModel {
public $name = 'Item';
public $tablePrefix = 'mst_';
}
結構柔軟に何でも扱えますね。
バージョン1.2の頃に使ったことがあったけど、バージョン2系になってからは初のCakePHPです。
findAllとか動かなくなってるんですね。
今現在(2011/11/18)まだ2系のリファレンス本は出てないような感じなので、しばらくはネット中心で情報を集めていくしかなさそうです。
0 件のコメント:
コメントを投稿