【发布时间】:2011-01-19 11:14:12
【问题描述】:
我有一个 CakePHP 1.3 应用程序,非常喜欢使用 Containable behavior 获取数据。
假设我的帖子与评论是一对多的关系。我使用 Containable 来查询(用于分页)所有帖子和所属评论的列表。但我只对每个帖子有多少评论感兴趣。在不获取所有评论行的情况下,我没有找到任何方法来实现这个可包含的查询。我试过了:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
导致“模型“评论”与模型“计数”不相关”错误消息。
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
不起作用,结果集为每个 Post 包含一个空的 Comment 数组,除了最后一个,它包含 count 字段,但包含所有 cmets 的数量而不仅仅是所属的。
我的另一个猜测是
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
但这会导致错误,因为 hasMany 关系是独立查询的,所以 Answer 表不在 Post 条目的查询中。 如何计算帖子的评论数?
【问题讨论】:
-
你有没有找到没有 counterCache 的解决方案?
标签: php cakephp model pagination