【发布时间】:2012-05-08 03:01:48
【问题描述】:
我正在寻找一种在 Yii 中重新排序 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);
【问题讨论】: