【问题标题】:PHP: add Comments Count for each Post in arrayPHP:为数组中的每个帖子添加评论计数
【发布时间】:2017-06-10 10:25:20
【问题描述】:

我有 2 个模型“post_model”和“comment_model”

在 Post_controller 中,我从 post_model 得到一个包含所有帖子的结果数组。

我正在尝试为每个帖子添加 cmets 计数,但我无法并且需要帮助。

  • 评论表有post_id。

请告诉我如何处理。 提前致谢。

【问题讨论】:

  • 所以你正在尝试编写查询来获取数据吗?向我们展示您尝试过的查询?
  • 我试过这个:select p.post_id,count(c.post_id) from posts p left join cmets c USING(post_id) group by p.post_id 但是如果我使用 LIMIt 它将无法正常工作5例如。 @rahul_m
  • 查询正确! .
  • 但是当我使用 LIMIT 时不能正常工作
  • 好的,检查我的答案,我修改了您的查询以获得所需的结果。

标签: php mysql arrays codeigniter


【解决方案1】:

试试这个,

SELECT 
  p.post_id,
  (SELECT count(c.post_id) FROM comments c WHERE c.post_id = p.post_id) cnt 
FROM posts p 
GROUP BY p.post_id LIMIT 5

希望这能解决您的问题。

【讨论】:

  • 太棒了 :) 谢谢。
【解决方案2】:
SELECT p.post_id, p.post_title, p.post_content, p.user_id,count(c.post_id)
FROM posts p 
LEFT JOIN comments c USING(post_id)
GROUP BY p.post_id, p.post_title, p.post_content, p.user_id;

【讨论】:

    【解决方案3】:

    这样的东西应该会给你每个帖子的 cmets 数量:

    SELECT 
    COUNT(*) AS comment_cnt, post_id 
    FROM comment_table 
    GROUP BY post_id;
    

    然后就可以遍历结果集,丰富对应的post对象了。 如果您只想计算某些特定帖子的 cmets 并且您知道它们的 post_id,则可以执行以下操作:

    SELECT 
    COUNT(*) AS comment_cnt, post_id 
    FROM comment_table 
    WHERE post_id IN (post_id1, post_id2, ...) 
    GROUP BY post_id;
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 2020-10-30
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多