2011-08-04 8 views
2

これは説明が少し難しいので、できるだけ明確にしようとします。私のCakePHPのプロジェクトでCakePHPの関連モデルのカウント合計を取得する

、私はCountryというモデルがあるとし、かつCountryRegionからhasMany関連を持っています。現在、RegionUserへのhasManyのアソシエーションを持ちますが、国外ではRegionは別の国に切り替えることができるため、外部キーを使用してCountryにユーザーを関連付けることはできません。

だから、今、私のSQLは次のように基本的になります(一部のみ)

users: id int(16); region_id int(16); 
regions: id int(16); country_id int(16); 
countries: id int(16); 

私がやりたいことは、私は介してアクセスできることを、CakePHPの中counterCacheような関数、または何かを見つけることです国モデルを作成し、Countryに属するRegionUserのカウントを取得します。私はちょうど[ユーザー] [国]を取得し、領域をループして数えることができることを知っていますが、余分なコードを必要としないためにキャッシュされた方法があります。

ありがとうございます!

答えて

1

地域にcounterCacheを使用し、virtualField( '人口' = > 'SUM(Region.user_count'))(それはちょうど疑似コードです!)

+0

入手しました。ありがとう! –

1

あなたはドキュメントhereを見つけることができるのfind( '数'、 '再帰的な' => 2)の方法

でそれを行うことができます。

+0

はい、それは1つの地域でしか手に入れられません。和を加えることは、私が*しようとしていることではありません。ある国に属するすべての*地域のための方法はありますか? –

+0

何についてhttp://book.cakephp.org/view/1033/counterCache-Cache-your-count?そこにはさらに強力な行動が必要です。 – mark

+0

'recursive'パラメータを2に設定してみてください。私はcountでそれを使用していませんが、find( 'first')を使って2番目のレベル関係のオブジェクトを取得します。 find( 'count'、array( 'recursive' => 2)); http://book.cakephp.org/view/1063/recursive –

関連する問題