Я много искал об этом и до сих пор не получил ответа. Вот проблема:
Я создаю объект CDbCriteria, чтобы получить корректные данные:Yii dataProvider порядок данных, заданный массивом
$criteria = new CDbCriteria;
$criteria->compare('id_post', $arrayContents);
где $arrayContents
представляет собой массив, состоящий из следующих элементов:
Array ([0] => 10 [1] => 16 [2] => 14 [3] => 15)
Таковы id_posts
я хочу представить используя dataProvider, но только в этом конкретном порядке. Далее я создаю DataProvider таким образом:
$dataProviderPosts = new CActiveDataProvider('Posts',array(
'criteria' => $criteria,
'pagination'=>array(
'pageSize'=>20,
),
));
Порядок отображения id_posts
составляет: 10, 14, 15, 16. Не один, что я хотел.
Я также попытался создать DataProvider так:
$dataProviderPosts = new CActiveDataProvider('Posts',array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>array('id_post'=>$arrayContents),
),
'pagination'=>array(
'pageSize'=>20,
),
));
Но только не отображая его в таком порядке: 16, 15, 14, 10, так что просто назад, так что не то, что я хотел, потому что я хочу для отображения его по порядку: 10, 16, 14, 15 точно так же, как цифры в $arrayContents
.
ну, это не проблема Yii, но db, вот вопрос о сортировке по статьям http://stackoverflow.com/questions/396748/ordering-by-the-order-of-values-in- a-sql-in-clause Однако я не знаю, как применить его к Yii dataprovider. –
Спасибо за ваш ответ. Это дало мне несколько новых идей, но пока никто из них не работал. – user2399760
Добавьте еще одно поле в таблицу 'priority'. Установите приоритет, чтобы отображать данные по вашему выбору. Просто! Возможно, это не решение для вашего ответа, а случайная идея. Это может решить вашу проблему. –