我正在尋找一種方式在Yii重新排序CActiveDataProvider。重新排序CActiveDataProvider
當前我正在使用數據提供程序來獲取排序和分頁數據。
然後我通過foreach循環來調整特定字段的數據,現在我需要根據新的調整數據重新對它進行排序。
我無法使用afterFind對模型中的數據進行排序,因爲我需要查詢另一個數據庫(MySQL)來計算出計算值,並且它似乎不喜歡處理過程中的切換。
我不想使用CArrayDataProvider,因爲除非我在調整數據時將控件放入循環中,否則沒有明顯的方式對分頁數據進行分頁,但是我不知道可以返回多少數據,說200條記錄,但唯一調整顯示20似乎違反直覺。
這一切然後推到一個CGridView小部件。
所以現在我需要重新調整下面的陣列升序例如。
$dataProvider = new CActiveDataProvider(blah);
foreach ($dataProvider->getData() as $data) {
$data->Score += SomeModel::model()->findByPk(1)->NewScore;
}
array(
'Score' => 7
),
array(
'Score' => 6
)
$this->render('blah', array('data' => $dataProvider);
感謝您的這一點,但是我不確定數據在哪一點被採用,或者我應該如何在自定義提供程序中實現它,以便它在Score上排序。 – 2012-04-27 11:17:36
@DamianCrawford:我修改了相當多的答案,看看它現在是否更有用。開頭:現在重寫'fetchData'而不是'getData'。 – Jon 2012-04-27 11:41:30