1
나는 사용자 당 평균 매출을 계산하는 함수를 포함하는 사용자 모드입니다. 이제 getAvgRevenue() 함수와 관련된 열의 CGridView에서 정렬을 적용하고 싶습니다. 라이센스는 User 모델의 관계입니다. 여기 CGridView에서 모델 방법에 정렬을 적용하는 방법 Yii
는<?php $this->widget('zii.widgets.grid.CGridView', array(
'id' => 'user-grid',
'dataProvider' => $modelUser,
'columns' => array(
array(
'header' => 'User ID',
'name' => 'user_id',
),
array(
'header' => 'Email',
'name' => 'email',
),
array(
'header'=>'Average Revenue',
'value'=>'$data->averagerevenue',
),
)
));
?>
정렬에 적용 내 코드보기에서 컨트롤러에서
public class User{
$user_id;
$email;
public function getAvgRevenue(){
$count = 0;
$revenue = 0;
foreach ($this->license as $license){
$revenue += $license->price;
$count++;
}
if($count!= 0){
$averageRevenue = $revenue/$count;
return $averageRevenue;
}
else{
return null;
}
}
}
$modelUser = new CActiveDataProvider('User', array(
'sort' => array(
'attributes' => array(
'user_id',
'email',
'averagerevenue'
),
'defaultOrder' => array(
'user_id' => CSort::SORT_ASC,
),
),
));
입니다 USER_ID 및 전자 메일이지만 평균 수익 열은 정렬 할 수 없습니다. CActiveDataprovider의 sort()에서 모델 메소드를 지정하는 방법 문제점을 해결하는 데 도움을주십시오.
$modelUser = new CActiveDataProvider('User', array(
'sort' => array(
'attributes' => array(
'user_id',
'email',
'avgRevenue' //here's the change for you
),
'defaultOrder' => array(
'user_id' => CSort::SORT_ASC,
),
),
));
을 그리고 당신의 gridview 열은 다음과 같아야합니다 :
감사 응답, 나는 이것을 시도했지만 작동하지 않습니다. 철자 문제가 없습니다. –