狠狠撸

狠狠撸Share a Scribd company logo
レシピ本を書いて知った
小ネタ3つ
長谷川智希
@tomzoh

http://sozai.7gates.net/
無料素材倶楽部
自己紹介
長谷川智希
デジタルサーカス(株)副団長CTO
Web/スマホアプリ開発

@tomzoh

facebook.com/hasegawa.tomoki
小ネタ1
小ネタ1.

HABTM
Has And Belongs to Many
n:nの結合を表現するアソシエーション
記事
Article
articles

タグ
結合テーブル

Tag
tags

class Article extends AppModel {
	 public $hasAndBelongsToMany = array(‘Tag’)
}
小ネタ1.

HABTM
記事
Article
articles

結合テーブル
?

タグ
Tag
tags

「2つのテーブルの複数形を接続した名前」
articles_tags? tags_articles?どっち側から見て?
なんとなく作ってエラーメッセージ見て修正。
小ネタ1.

HABTM
記事
Article
articles

結合テーブル
articles_tags

タグ
Tag
tags

結合テーブルの名前は…

アルファベット順!
小ネタ2
小ネタ2.

組込定数
開発環境のパスとURL、本番環境のパスとURL。
core.phpで定義してた。
switch(getenv(‘SERVER_NAME’)){
	 case ‘dev.xxx.com’:
	 	 de?ne(‘PROJECT_ROOT’, ‘/var/www/xx/app/‘);
!

	 default:
	 	 de?ne(‘PROJECT_ROOT’, ‘/var/www/yy/app/‘);
!

}
小ネタ2.

組込定数
便利な組込定数/メソッドがありました…。

APP
ROOT
WWW_ROOT
Router::fullbaseUrl()
Con?gure::read(‘App.fullBaseUrl)

appディレクトリのパス
/path/to/project/app/
appディレクトリを含むパス
/path/to/project
wwwrootディレクトリのパス
/path/to/project/app/webroot/
ドキュメントルートのURL
http://www.example.com
小ネタ3
小ネタ3.

非正規フィールドの自動更新
ユーザ User、コメント Comment があるシステム。
ユーザのコメント数を毎回計算すると大変なので
User.comment_countを作る。
CommentのafterSave()あたりで計算したくなるよね。
イベントシステムを使おう!
小ネタ3.

非正規フィールドの自動更新
ずばりそれをサポートする機能がありました。
belongsToのオプション。相手のテーブルの[テーブル
名]_commentが更新される。
ユーザ

コメント

User
comment_count

Comment
小ネタ3.

非正規フィールドの自動更新
class Comment extends AppModel {
public $belongsTo = array(
こうやって指定
'User' => array(
'counterCache' => true,
'counterScope' => array(
'Comment.is_deleted' => false
),
));
条件指定も可能
}
ご静聴ありがとうございました。

@tomzoh

facebook.com/hasegawa.tomoki

More Related Content

CakePHP X'mas Presentation