我有三张表、分行、 child 和发票—— child 有很多发票。分支机构有很多 child
我试图让用户查询数据库以获取给定分支机构中 child 的所有发票,而且用户可能已经输入了一个日期范围。无论哪种方式,我都想选择所有发票并将它们分组,以便每月轻松显示在表格中。即,用户想要 2013 年 1 月 -> 2014 年 1 月的所有发票。然后我显示所有发票,但将它们分组,以便所有 2013 年 1 月、2013 年 2 月等都在一起......每个月都会以某种方式很酷)
此刻我有:
$conditions['Child.branch_id'] = $branch_id;
if($from != '') $conditions['Invoice.created >='] = $from;
if($to != '') $conditions['Invoice.created <='] = $to;
$fields = array('Invoice.*', 'Child.*', 'YEAR(Invoice.created) as year', 'MONTH(Invoice.created) as month');
$group = array('YEAR(Invoice.created)', 'MONTH(Invoice.created)');
$order = array('Invoice.created');
$kidsInvoices = $this->Invoice->find('all', array( 'conditions'=>$conditions,
'fields'=>$fields,
'group'=>$group,
'order'=>$order));
但它只返回 2 条记录,而当它应该返回所有记录时应该返回 5 条记录。我注意到我的 5 张发票中它们只跨了 2 个月,所以我猜我的错误代码是每月只收到一张发票。
谁能告诉我怎样才能得到我想要的结果?
最佳答案
如果我正确理解您想做什么,那么您正在寻找秩序,而不是团队。分组依据将使每个给定列具有相同结果的所有行压缩为一行,从而导致您在结果中看到的行数更少。
$order = array('year', 'month');
$kidsInvoices = $this->Invoice->find('all', array( 'conditions'=>$conditions,
'fields'=>$fields,
'order'=>$order));
关于php - cakephp - 按年、月使用分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008626/