Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql cakephp在一年内每月计算项目数_Mysql_Cakephp - Fatal编程技术网

Mysql cakephp在一年内每月计算项目数

Mysql cakephp在一年内每月计算项目数,mysql,cakephp,Mysql,Cakephp,您如何使用cakephp计算,例如,一年中每个月发布的帖子数量 最好使用Model->find('count')并获取数组中的数据。这很接近 查询 $data = $this->Post->query("SELECT COUNT(id),MONTH(created) FROM posts GROUP BY YEAR(created), MONTH(created);"); 返回 Array ( [0] => Array ( [0

您如何使用cakephp计算,例如,一年中每个月发布的帖子数量

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

这很接近

查询

$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
                )

        )

)

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

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


2:使用前面提到的查询,但将其放在模型类中,而不是应用程序类中。

我只是做了类似的事情,只使用CakePHP(无直接查询)。它在CakePHP2中工作,还没有在1.x中测试过

示例的代码如下所示:

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

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

类似的问题,但他们没有一个简单的答案:尽管这很可能有效,但最好使用
find()
而不是
query()
,它更好地与您的模型一起工作,并且您不必担心这样的数据清理。科斯塔斯的回答显示了实现同样目标的正确方法。