Вам нужно сделать две вещи:
- Добавить отношение
pagepoints
к with
части критерия запроса - Ссылка на столбец, по которому вы хотите отсортировать в
order
часть критериев
Я выделил строки, где это происходит, в приведенном ниже коде:
$dataProvider = new CActiveDataProvider('Page', array(
'criteria'=>array(
'with' => array('pagepoints'), // #1
'condition' => 'active = 1 AND userid IN ('.$ids.')',
'order' => 'pagepoints.points', // #2
),
'pagination'=>array(
'pageSize'=>30,
),
));
Что нужно знать, чтобы понять, как это работаетв том, что когда Yii создает запрос SQL (который является LEFT OUTER JOIN
для таблицы Points
), он использует имя, которое вы дали отношению в модели Page
(вы даете определение для этого, это pagepoints
) для псевдонима присоединяемой таблицы.Другими словами, запрос выглядит так:
SELECT ... FROM Page ... LEFT OUTER JOIN `Points` `pagepoints` ...
Из этого следует, что правильная спецификация для порядка сортировки: pagepoints.points
: pagepoints
- это псевдоним таблицы, а points
- это столбец, в которомтаблица.