CakePHP 2.0分页和总和hasMany相关模型

时间:2012-03-04 13:40:49

标签: cakephp

Project hasMany Comments
Payment (id, project_id, value, date)

我希望在索引视图中包含一个等于每个项目付款总额的列。我希望能够按此字段排序。

我在这里发现了一些类似的问题,但它们都没有涉及分页。

我目前的(错误的)解决方案:

    $this->paginate = array('Project' => array(
            'conditions' => array('Project.archived =' => $archive),
            'order' => 'Project.start_date DESC',
            'contain' => array(
                    'Payment' => array(
                            'fields' => array('SUM(Payment.value) as Project__value_sum'),
                            'group'  => array('Payment.project_id'),
                            )
                        )
        ));
    $data = $this->paginate('Project');
    $this->set('projects', $data);
    $this->set('archive', $archive);

1 个答案:

答案 0 :(得分:0)

好像你可能想在Payment模型上做afterSave

在afterSave函数中,运行一些总计付款的MySQL(使用MySQL SUM())作为相关项目,并将其存储在Project.payment_total中。

然后,您可以轻松地按该字段进行排序,这样您就不必在每个页面上运行复杂的MySQL,因为它只会在必要时运行(即,当有新的或更改的付款时)