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);
答案 0 :(得分:0)
好像你可能想在Payment
模型上做afterSave。
在afterSave函数中,运行一些总计付款的MySQL(使用MySQL SUM())作为相关项目,并将其存储在Project.payment_total中。
然后,您可以轻松地按该字段进行排序,这样您就不必在每个页面上运行复杂的MySQL,因为它只会在必要时运行(即,当有新的或更改的付款时)