这有点难以解释,所以我会尽量清楚。
在我的CakePHP项目中,假设我有一个名为Country
的模型,Country
与hasMany
有一个Region
关联。现在,Region
与hasMany
之间也有User
个关联,而国家则没有(因为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
的函数,我可以通过Countries模型访问该函数,并在User
中获得Region
的计数属于Country
。我知道我可以获得[用户] [国家],循环遍历区域并对其进行计数,但是是否有一个缓存方法(最好)不需要额外的代码?
谢谢!
答案 0 :(得分:1)
你可以用find('count','recursive'=> 2)方法来做到这一点
您可以找到文档here:
答案 1 :(得分:1)
在Region上使用counterCache,在Country上使用virtualField('population'=>'SUM(Region.user_count'))(这只是伪代码!)。