小编典典

cakephp查找所有有评论的帖子

sql

我创建了一个简单的博客,其中包含帖子和评论。我想查找所有具有至少一条评论的帖子,并且还查找所有没有评论的帖子。有没有Cakephp的方法可以做到这一点?IE浏览器也许像

$this->Post->find('all', ???);

我最终写了自己的查询,下面的示例查找所有带有至少1条评论的帖子

SELECT *
  FROM (
       select posts.*, count(comments.id) as comment_count
        from posts left join comments on posts.id = comments.post_id
        group by posts.id
       ) as T
 WHERE comment_count != 0

但似乎会有更好的方法来做到这一点。

注意:帖子有很多评论,评论属于帖子


阅读 168

收藏
2021-04-22

共1个答案

小编典典

$grouped_comments = $this->Comment->find('all', array('group' => 'Comment.post_id'));

这将为您提供按post_id分组的所有评论的数组,因此您将对每个帖子仅拥有一个评论,这就是您想要的。从那里,您可以随心所欲地处理这些数据。

假设您要发布带有评论的所有帖子标题的列表。

echo "<H1>Posts with comments:</H1>";
foreach ($grouped_comments as $comment) {
echo $comment['Post']['Title'] . "<br>";
}

当然,只有在comment.php模型中设置了模型关系时,此方法才有效。

2021-04-22