我有一个CakePHP应用程序,我试图计算用户每种类型的帖子有多少.我也使用paginate帮助器在他们的个人资料上显示所有用户的帖子.
我可以:
1)对所有用户的帖子进行查找(‘all’,$conditions)请求,然后解析我需要的计数(通过邮寄方式发送并检查它是否与我正在查找的内容相匹配).
2)使multiplie find(‘count’,$conditions)请求,获得我需要的所有计数.
3)维护用户表中的新列以在创建帖子时跟踪这些数字(放置将涉及在发布新帖子时写入用户帐户).
哪一个是最好的选择?
解决方法:
从数据库中获取所有记录并在PHP中计算它们是非常浪费的废话.这正是数据库的用途.
find(‘count’)只是创建一个SQL查询,如SELECT COUNT(*)FROM … WHERE …,这是最快的方法.添加适当的条件以获得所需的计数,您可能需要刷新sql以了解这些条件.
还有counter-caching的特殊内容,如果您计算hasMany关系,您可能需要查看.