【发布时间】:2017-08-07 15:28:07
【问题描述】:
你如何使用 cakephp 来计算一年中每个月的帖子数?
最好使用 Model->find('count') 获取数组中的数据。
【问题讨论】:
你如何使用 cakephp 来计算一年中每个月的帖子数?
最好使用 Model->find('count') 获取数组中的数据。
【问题讨论】:
我只是做了类似的事情,只使用 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);
【讨论】:
这就接近了
查询
$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 方法。
在使用 cake 时,我更喜欢尽可能靠近框架。这意味着我尽量避免直接在控制器中编写查询,因为这会导致模型代码无处不在。因此我推荐两种解决方案之一
1:(以及我对更复杂的东西所做的):为您想要执行的计算创建一个视图并创建一个模型来匹配。
2:如前所述使用查询,但将其放在模型类中,而不是应用程序类中。
【讨论】: