Cakephpの共通処理レイヤーでもモデルに接続したい
Cakephpにはシステム内で共通の処理を記述できる場所としてAppController.phpというファイルがある。1.2系の場合は、app_controller.phpというファイルが共通処理を記述するファイルになる。
共通処理の際にモデルに接続する方法は以下のような方法で対応できる。
1 2 | $SHOP = ClassRegistry::init( 'Shop' ); $shop_info = $SHOP ->findByEmail( $email ); |
Shopモデルを読み込んでemailカラムに対するfindで該当データを取得する例です。
モデルを読み込んでしまえば、通常のfindやsaveと同様にコードを記述できます。以下の例は特定の行をidカラムで指定した上で、statusカラムのみにアップデートをかけています。
1 2 3 | $PRODUCT = ClassRegistry::init( 'Product' ); $PRODUCT ->id = $id ; $PRODUCT ->saveField( 'status' , '3' ); |
ClassRegistry::initを活用すれば、AppController内であっても動的に操作するモデルを切り替えてデータベースを操作することが可能です。
Cakephpのプラグイン内のモデルに接続する場合は以下のようになります。
1 2 | $PLUGIN_MODEL = ClassRegistry::init( 'Plugin.Model' ); $data = $PLUGIN_MODEL ->findById( $id ); |