我正在寻找一种方式在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