CATIiveDataProvider를 다시 정렬하는 방법을 Yii에서 찾고 있습니다. CActiveDataProvider 다시 정렬
은 현재 내가 정렬 페이지가 매겨진 데이터를 가져 오도록 데이터 공급자를 사용하고 있습니다.그때 특정 필드에 대한 데이터를 조정 foreach 루프로 통해 반복하고, 지금은 다시 정렬 할 필요가 새로 조정 된 데이터를 기반으로. 나는 계산 된 값을 해결하기 위해 다른 DB (MySQL의) 쿼리해야하고 처리하는 동안 스위칭을 좋아하지 않는 것 때문에
나는 afterFind를 사용하여 모델의 데이터를 정렬 할 수 없습니다.
CArrayDataProvider를 사용하고 싶지 않습니다. 왜냐하면 데이터를 조정하는 동안 컨트롤을 루프에 넣지 않으면 데이터가 페이지 매김을하지 못하기 때문에 데이터가 얼마나 돌아올 지 모릅니다 200 레코드를 말하지만 디스플레이를 조정하는 데는 20 직관이 어긋납니다.
이 모두 다음 CGridView 위젯에 푸시됩니다.
은 이제 I는, 예를 들면 오름차순으로 이하 어레이 재조정 할 필요가있다. 당신은 단순히 기존 CDataProvider
래핑 자신의 새로운 CDataProvider
를 구현해야처럼
$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);
덕분에, 그러나 나는 데이터가 의지 도착하는 시점에서하거나 점수에 정렬되도록 내 사용자 지정 공급자에 구현하는 방법을 모르겠습니다. –
@DamianCrawford : 대답이 상당히 수정되었습니다. 이제 더 유용할까요? heads up : 이제'getData' 대신에'fetchData'를 오버라이드합니다. – Jon