1
我在嘗試獲取分頁結果列表,但我想要在計算字段上對它們進行排序的選項。使用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)
);
$順序是該領域的排序上的名字,和$方向僅僅是「ASC」或「降序」。
這很好,如果我排序在數據庫中存在的字段,如'price_paid'按順序查找Invoices或每件東西的數量,但似乎無法應對totalPaid上的排序或latestInvoice - 我只是得到未排序的結果。
我試着創建一個虛擬的領域,例如,
$this->Invoice->virtualFields['latestInvoice'] = 'MAX(Invoice.invoice_date)';
$order = "Invoice.latestInvoice";
但這也似乎沒有任何區別 - 排序順序仍然被忽略。
我在網上尋找解決方案,但他們似乎都通過使用虛擬領域來解決問題,這顯然不適合我!
任何人都可以幫忙嗎?謝謝!
謝謝。事實證明,我錯誤地傳遞了命名參數(我已經命名它們,例如sort:latestInvoice),並且它們覆蓋了我在上面的代碼中設置的順序。我一直在使用switch語句來獲取排序值的名稱,然後嘗試通過order變量來更改它,但代碼並未接受 - 因此它試圖排序(就其知道的情況而言) )不存在的字段'latestInvoice',並救助。謝謝你的幫助! – Sharon