【问题标题】:cakephp COUNT items per month in a yearcakephp 一年中每月有 COUNT 个项目
【发布时间】:2017-08-07 15:28:07
【问题描述】:

你如何使用 cakephp 来计算一年中每个月的帖子数?

最好使用 Model->find('count') 获取数组中的数据。

【问题讨论】:

标签: mysql cakephp


【解决方案1】:

我只是做了类似的事情,只使用 CakePHP(没有直接查询)。它适用于 CakePHP 2,尚未在 1.x 中测试。

您的示例代码如下所示:

$params = array(
  'recursive' => -1,
  'fields' => array('id', 'MONTH(created)')
  'group' => array('YEAR(created)', 'MONTH(created)')
);

$numberOfPosts = $this->Model->find('count', $params);

【讨论】:

    【解决方案2】:

    这就接近了

    查询

    $data = $this->Post->query("SELECT COUNT(id),MONTH(created) FROM posts GROUP BY YEAR(created), MONTH(created);");
    

    返回

    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [COUNT(id)] => 1
                        [MONTH(created)] => 3
                    )
    
            )
    
        [1] => Array
            (
                [0] => Array
                    (
                        [COUNT(id)] => 2
                        [MONTH(created)] => 4
                    )
    
            )
    
    )
    

    【讨论】:

    • 尽管这很可能会奏效,但使用find() 而不是query() 总是更好,它可以更好地与您的模型一起使用,您不必担心这种方式的数据清理。 Kostas 的回答显示了实现相同目标的正确 Cake 方法。
    【解决方案3】:

    在使用 cake 时,我更喜欢尽可能靠近框架。这意味着我尽量避免直接在控制器中编写查询,因为这会导致模型代码无处不在。因此我推荐两种解决方案之一

    1:(以及我对更复杂的东西所做的):为您想要执行的计算创建一个视图并创建一个模型来匹配。

    2:如前所述使用查询,但将其放在模型类中,而不是应用程序类中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2020-09-25
      • 2018-04-08
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多