Với một truy vấn như thế này:Yii: làm thế nào để đặt hàng trước khi GROUP BY với CDbCriteria?
SELECT * FROM (
SELECT * FROM message ORDER BY added_on DESC
) as m WHERE receiver_id = 2 GROUP BY sender_id ORDER BY priority_id DESC;
tôi biết làm thế nào để làm điều đó bằng findAllBySql
:
$this->findAllBySql(
'SELECT * FROM (
SELECT * FROM message ORDER BY added_on DESC
) as m WHERE receiver_id = :receiverId
GROUP BY sender_id
ORDER BY priority_id DESC',
array('receiverId' => $userId));
Nhưng tôi đã tự hỏi nếu có cách nào để làm bằng CDbCriteria nguyên nhân này, các mã sau đây , tất nhiên, không hoạt động:
$criteria = new CDbCriteria();
$criteria->condition = 'receiver_id = :receiverId';
$criteria->group = 'sender_id';
$criteria->order = 'priority_id DESC, added_on DESC';
$criteria->params = array('receiverId' => $userId);
Cảm ơn.
Điều này có hữu ích không? http://stackoverflow.com/questions/8467698/sub-queries-activerecord-yii –
Thú vị, vì vậy việc đọc liên kết đó có vẻ không thể thực hiện được bằng CDbCriteria. Cảm ơn! – Puigcerber