2012年07月17日

cakephp hasmany を count する counter cache

お願いします♪いいねとかつぶやいたりして下さい
 
追記

例えば Attachmentonlyモデルから カウンターキャッシュフィールド名を指定して使いたい時。
var $belongsTo = array(
			'User' => array(
				'foreignKey' => 'foreign_key',
				'counterCache' => 'attachment_count'
			)
		);
	


true の代わりにに counterCache にフィールド名を指定すれば有効になる。



ナンだよ。これ。
素晴らしいじゃん。

今まで hasMany の数を数えるにはどうしたらよいのだろ・・・
と悩んできたがこれで一発解決。

その名も counter cache 。

今まで関連モデルを数えるのに
http://www.hideblog.net/nikkis/show/157/

ってやらないかんかったのが
たったの数行でできる。

一人のユーザーがいくつかアイテムを持っている場合。

○親モデル (1対)
user.php

DB
id , name , item_count [←重要! ]

○子モデル (複数)
item.php
DB
id , user_id

class Item extends AppModel {
		var $belongsTo = array(
			'User' => array('counterCache' => true),
			/*
				'counterScope' => array('Counse.status' => 0)//status が 0のもののみ数える
			*/
		);
	}


たったこれだけ。

・user DB に item_count を追加
・itemp.php に belongsTo で使うよと指定

たったこれだけ。。。
ほんとにこれだけ。この2つだけ。

item に データを追加するごとに item_count が増え、
item の データを減らす毎に item_count が減る。
つまり、 hasmany のカウントがそっくりそのまま入る。

これで hasmany カウント地獄から抜け出せる。

にしてもなんでこの情報今まで知らなかったのだろう。

関連するタグ: cakephp
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ