2010-07-29 26 views
3

我有一个CakePHP应用程序,我试图计算每个用户有多少个帖子。我还使用分页助手在其个人资料中显示所有用户的帖子。
我可以:
1)做一个find('all', $conditions)请求所有用户的帖子,然后解析为我需要的计数(通过邮寄和检查它是否符合我期待的)。
2)多次请求find('count', $conditions)请求,获得我需要的所有计数。
3)维护用户表中的新列以在创建帖子时跟踪这些数字(当涉及新帖子时,将涉及写入用户帐户)。
哪一个会是最好的选择?在CakePHP中find('count')的代价是多少?

回答

7

从数据库中获取所有记录并用PHP计算它们是非常浪费的废话。这正是数据库的用途。

A find('count')只是做了一个SQL查询,如SELECT COUNT(*) FROM … WHERE …,这真的是最快的方法。添加适当的条件以获得所需的计数,您可能需要刷新SQL以了解这些条件。

还有一个特殊的counter-caching,你可能想看看,如果你正在计算hasMany关系。

+0

链接不工作。 – 2015-01-23 05:18:00

+0

是的,链接大约5年过时了。我希望你不再使用Cake的1.x版本。不知道当前版本中的等效物是什么。 – deceze 2015-01-23 05:28:38

+0

好的。当然,在新项目中使用2.x分支的最新版本。我将尝试查找当前的链接并更新此主题。 – 2015-01-23 05:51:09