SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
レシピ本を書いて知った
小ネタ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’:
	 	 define(‘PROJECT_ROOT’, ‘/var/www/xx/app/‘);
!

	 default:
	 	 define(‘PROJECT_ROOT’, ‘/var/www/yy/app/‘);
!

}
小ネタ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
小ネタ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

Contenu connexe

Plus de Tomoki Hasegawa

Plus de Tomoki Hasegawa (20)

「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作る
 
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
 
TestFlightみたいなのを自作する
TestFlightみたいなのを自作するTestFlightみたいなのを自作する
TestFlightみたいなのを自作する
 
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知するPHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
 
Stargazer Meetup #1
Stargazer Meetup #1Stargazer Meetup #1
Stargazer Meetup #1
 
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作ったPUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作った
 
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきたPHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
 
CakePHP3ウォークスルー
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルー
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
 
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するAppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
 
PHPerのためのSwift入門
PHPerのためのSwift入門PHPerのためのSwift入門
PHPerのためのSwift入門
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
 
3 auto layout tips
3 auto layout tips3 auto layout tips
3 auto layout tips
 
Drupal on vagrant-aws
Drupal on vagrant-awsDrupal on vagrant-aws
Drupal on vagrant-aws
 
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
オプショナル型。 〜 なんとなく付ける ! ? 撲滅オプショナル型。 〜 なんとなく付ける ! ? 撲滅
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
CustomOperatorで遊ぼう!
CustomOperatorで遊ぼう!CustomOperatorで遊ぼう!
CustomOperatorで遊ぼう!
 

CakePHP X'mas Presentation