0
我有一個很好的基本分頁查詢,它可以正常工作,直到我將DISTINCT放在其中一列上。CakePHP paginate造成奇怪的DISTINCT行爲
以下工作:
$this->paginate = array(
'conditions' => array(Message.recipient_id' => $this->Auth->user('id')),
'fields' => array(
'DISTINCT Message.sender_id',
'Message.recipient_id',
'Message.thread_id',
),
'limit' => 15,
'order' => array('Message.created' => 'DESC')
);
該查詢不起作用:
$this->paginate = array(
'conditions' => array(Message.recipient_id' => $this->Auth->user('id')),
'fields' => array(
'DISTINCT Message.sender_id',
'Message.recipient_id',
'Message.thread_id',
// If I add any of the following columns, the DISTINCT doesn't work at all
'Message.created',
'Message.modified',
'Message.id'
),
'limit' => 15,
'order' => array('Message.created' => 'DESC')
);
爲什麼會在「字段」選項之旅了DISTINCT關鍵字的任何與其他列?
這對我沒有任何意義。
我確實首先使用'group',但'order'被忽略。但至少現在我明白爲什麼DISTINCT在這種情況下不起作用。是否可以將DISTINCT關鍵字應用於一列以使其起作用? 或者還有其他解決方案嗎?這很令人沮喪。 – Botch
據我所知,如果您在mysql查詢中使用'by x by x order by group',它將被排序。也許CakePHP生成的查詢不包括按順序。所以你應該檢查它正在創建的實際查詢。 – Kai