0

我正在使用 cakephp 1.3。我在收入表中有日期字段。我试图在一个循环中获得每月的总收入。以下是我的查询。

$income_and_hst = $Income->find('all', array(
                            'fields' => array('SUM(Income.amount) as income', 
                                            'SUM(Income.hst_amount) as hst', 
                                            'MONTH(date) as month'),
                            'conditions' => array(
                                'Income.income_account_id' => array(1,2,3,4),
                                'Income.user_id' => $this->Auth->user('id'),
                                'Income.account_id' => $this->Session->read('Account.default_account'),
                                'Income.date >' => $starting_date,
                                'Income.date <' => $ending_date,
                                ),
                            'group' => 'MONTH(date)',
                            )
                        );

这给了我5个月的收入。因为收入是从5个月开始的。即使其他月份没有收入,我也需要显示所有 12 个月。如果没有收入,我希望该月为 0。

有人可以给我一个方向吗?

谢谢你。

4

1 回答 1

0

我的猜测是您无法使用该界面执行此操作。您要么需要深入研究原始 SQL(和交叉连接),要么在周围的 php 代码中添加缺少的月份。我建议后者这样的东西应该可以工作(伪代码,我不记得 php 语法):

for ($row in $income_and_hst) {
    $income_and_hst_all[$row['month']] = $row
}

for ($month = 1;$month <= 12; $month++) {
    if ($income_and_hst_all[$month] == nil) {
       $income_and_hst_all[$month] = Array (
           'income' => 0, 
           'hst' => 0, 
           'month' => $month
       )
    }
}
于 2013-09-28T23:00:33.170 回答