CakePHP X'mas Presentation

1,354
-1

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,354
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CakePHP X'mas Presentation

  1. 1. レシピ本を書いて知った 小ネタ3つ 長谷川智希 @tomzoh http://sozai.7gates.net/ 無料素材倶楽部
  2. 2. 自己紹介 長谷川智希 デジタルサーカス(株)副団長CTO Web/スマホアプリ開発 @tomzoh facebook.com/hasegawa.tomoki
  3. 3. 小ネタ1
  4. 4. 小ネタ1. HABTM Has And Belongs to Many n:nの結合を表現するアソシエーション 記事 Article articles タグ 結合テーブル Tag tags class Article extends AppModel { public $hasAndBelongsToMany = array(‘Tag’) }
  5. 5. 小ネタ1. HABTM 記事 Article articles 結合テーブル ? タグ Tag tags 「2つのテーブルの複数形を接続した名前」 articles_tags? tags_articles?どっち側から見て? なんとなく作ってエラーメッセージ見て修正。
  6. 6. 小ネタ1. HABTM 記事 Article articles 結合テーブル articles_tags タグ Tag tags 結合テーブルの名前は… アルファベット順!
  7. 7. 小ネタ2
  8. 8. 小ネタ2. 組込定数 開発環境のパスとURL、本番環境のパスとURL。 core.phpで定義してた。 switch(getenv(‘SERVER_NAME’)){ case ‘dev.xxx.com’: define(‘PROJECT_ROOT’, ‘/var/www/xx/app/‘); ! default: define(‘PROJECT_ROOT’, ‘/var/www/yy/app/‘); ! }
  9. 9. 小ネタ2. 組込定数 便利な組込定数/メソッドがありました…。 APP ROOT WWW_ROOT Router::fullbaseUrl() Configure::read(‘App.fullBaseUrl) appディレクトリのパス /path/to/project/app/ appディレクトリを含むパス /path/to/project wwwrootディレクトリのパス /path/to/project/app/webroot/ ドキュメントルートのURL http://www.example.com
  10. 10. 小ネタ3
  11. 11. 小ネタ3. 非正規フィールドの自動更新 ユーザ User、コメント Comment があるシステム。 ユーザのコメント数を毎回計算すると大変なので User.comment_countを作る。 CommentのafterSave()あたりで計算したくなるよね。 イベントシステムを使おう!
  12. 12. 小ネタ3. 非正規フィールドの自動更新 ずばりそれをサポートする機能がありました。 belongsToのオプション。相手のテーブルの[テーブル 名]_commentが更新される。 ユーザ コメント User comment_count Comment
  13. 13. 小ネタ3. 非正規フィールドの自動更新 class Comment extends AppModel { public $belongsTo = array( こうやって指定 'User' => array( 'counterCache' => true, 'counterScope' => array( 'Comment.is_deleted' => false ), )); 条件指定も可能 }
  14. 14. ご静聴ありがとうございました。 @tomzoh facebook.com/hasegawa.tomoki
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×