Mysql cakephp在一年内每月计算项目数
您如何使用cakephp计算,例如,一年中每个月发布的帖子数量 最好使用Model->find('count')并获取数组中的数据。这很接近 查询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
$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()
,它更好地与您的模型一起工作,并且您不必担心这样的数据清理。科斯塔斯的回答显示了实现同样目标的正确方法。