|
|
CakePHP Behavior の紹介
自己紹介
フリーのプログラマー BLOG : Sun Limited Mt. Twitter : syuhari Skype : syuharix
Behavior 使ってますか?
Behavior とは
振る舞い 行為
Controller : Component View : Helper Model : Behavior
モデルに 機能を 追加する
使い方
インストール app/models/behaviors
<?php class Model extends AppModel { var $name = 'Model'; var $actsAs = array('Behavior'); } ?>
実際に 開発で使った
ユーザ情報は ソフトデリートで!
beforeDelete, afterFind とか 使えば出来そう
お店情報も ソフトデリートで!
Soft Deletable Behavior http://bakery.cakephp.org/articles/view/soft-delete-behavior
CREATE TABLE `test`.`users` ( `id` TINYINT NOT NULL AUTO_INCREMENT , `name` VARCHAR( 20 ) NOT NULL , `created` DATETIME NOT NULL , `modified` DATETIME NOT NULL , PRIMARY KEY ( `id` ) );
mysql> select * from users; +----+----------+---------------------+---------------------+ | id | name | created | modified | +----+----------+---------------------+---------------------+ | 1 | akahoshi | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 2 | sekimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 3 | toritani | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 4 | kanemoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 5 | arai | 2009-05-21 13:37:05 | 2009-05-21 13:37:05 | | 6 | mench | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 7 | fujimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 8 | kanou | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 9 | ando | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | +----+----------+---------------------+---------------------+ 9 rows in set (0.00 sec)
mysql> select * from users; +----+----------+---------------------+---------------------+ | id | name | created | modified | +----+----------+---------------------+---------------------+ | 1 | akahoshi | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 2 | sekimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 3 | toritani | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 4 | kanemoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 5 | arai | 2009-05-21 13:37:05 | 2009-05-21 13:37:05 | | 7 | fujimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 8 | kanou | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | | 9 | ando | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | +----+----------+---------------------+---------------------+ 8 rows in set (0.00 sec)
SofeDeletable Behavior を使う <?php class Users extends AppModel { var $name = 'User'; var $actsAs = array('SoftDeletable'); } ?>
DB にカラム追加 ALTER TABLE `users` ADD `deleted` TINYINT NOT NULL ; ALTER TABLE `users` ADD `deleted_date` DATETIME NULL ;
mysql> select * from users; +----+----------+---------------------+---------------------+---------+--------------+ | id | name | created | modified | deleted | deleted_date | +----+----------+---------------------+---------------------+---------+--------------+ | 1 | akahoshi | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 2 | sekimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 3 | toritani | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 4 | kanemoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 5 | arai | 2009-05-21 13:37:05 | 2009-05-21 13:37:05 | 0 | NULL | | 6 | mench | 2009-05-21 13:36:55 | 2009-05-21 14:12:06 | 0 | NULL | | 7 | fujimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 8 | kanou | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 9 | ando | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | +----+----------+---------------------+---------------------+---------+--------------+ 9 rows in set (0.00 sec)
mysql> select * from users; +----+----------+---------------------+---------------------+---------+---------------------+ | id | name | created | modified | deleted | deleted_date | +----+----------+---------------------+---------------------+---------+---------------------+ | 1 | akahoshi | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 2 | sekimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 3 | toritani | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 4 | kanemoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 5 | arai | 2009-05-21 13:37:05 | 2009-05-21 13:37:05 | 0 | NULL | | 6 | mench | 2009-05-21 13:36:55 | 2009-05-21 14:16:41 | 1 | 2009-05-21 14:16:41 | | 7 | fujimoto | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 8 | kanou | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | | 9 | ando | 2009-05-21 13:36:55 | 2009-05-21 13:36:55 | 0 | NULL | +----+----------+---------------------+---------------------+---------+---------------------+ 9 rows in set (0.00 sec)
コードを1行 追加するだけ!
その他の Behavior
Sluggable Behavior http://bakery.cakephp.org/articles/view/sluggable-behavior
SEO Friendly な URL を作れる ID ではなくスラグでモデルを扱う
http://bakery.cakephp.org/articles/view/1 とかではなく、 http://bakery.cakephp.org/articles/view/sluggable-behavior
PublishableBehavior 開始日時、終了日時で 記事の公開を コントロールできる
Bakery で探そう! http://bakery.cakephp.org/tags/view/behavior
Summary: 第4回 CakePHP@Tokyo LT
| URL: |
No comments posted yet
Comments