Sha*_*ron 1 pagination cakephp
我正在尝试获取分页结果列表,但我希望选择在计算字段上对它们进行排序.
我有这个:
$this->Paginator->settings = array(
'fields' => 'COUNT(Invoice.id) as totalInvoices,
SUM(Invoice.price_paid) as totalPaid,
MAX(Invoice.invoice_date) as latestInvoice',
'group' => array('Invoice.supplier_id'),
'order' => array($order => $direction)
);
Run Code Online (Sandbox Code Playgroud)
$ order是要排序的字段的名称,$ direction只是'asc'或'desc'.
如果我对数据库中存在的字段进行排序,就像'price_paid'按照每个数量的顺序查找发票或其他任何内容,这很好,但它似乎不能应对totalPaid或latestInvoice上的排序 - 我只是得到未分类的结果.
我尝试通过例如创建一个虚拟字段
$this->Invoice->virtualFields['latestInvoice'] = 'MAX(Invoice.invoice_date)';
$order = "Invoice.latestInvoice";
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何区别 - 排序顺序仍然被忽略.
我在网上寻找解决方案,但他们似乎都通过使用虚拟字段来解决问题,这显然对我不起作用!
我尝试使用虚拟字段,它对我来说工作正常下面是我的代码可能有帮助: -
$this->Invoice->virtualFields['latestInvoice'] = 'MAX(Invoice.invoice_date)';
$order = "Invoice.latestInvoice";
$options = array(
'fields' => 'COUNT(Invoice.id) as totalInvoices,
SUM(Invoice.price_paid) as totalPaid,
MAX(Invoice.invoice_date) as latestInvoice',
'order' => array($order =>'asc'),
);
$this->paginate = $options;
$list = $this->paginate('Invoice');
pr($list);die;
Run Code Online (Sandbox Code Playgroud)
同时检入虚拟字段是否在$ list中的数组.