"UserFlag"모델의 관계가있는 "User"모델의 결과를 표시하는 데 Cgridview를 사용하고 있습니다.Yii 관계형 모델의 중복 열 이름이있는 Cgridview
는 는"사용자"모델은 -> tbl_user (ID, 이름, 비밀번호, 플래그) "깃발"모델 -> tbl_userFlag (ID, 플래그)
ID는 두 모델 모두에서 같은 의미한다. 그러나 플래그는 다르게 의미합니다 (데이터베이스를 수정할 수 없으므로이를 고수해야 함). 동일한 gridview에 표시해야합니다.는
I 발생할 문제는 가있는 gridview가 제대로 두 플래그를 표시 할 수 있다는 것입니다하지만 실패하고 내가 정렬하고 "사용자"모델 플래그를 필터링 할 때 오류가 표시됩니다. (그러나 정렬 및 필터링 "UserFlag"모델에서 플래그에 대한 작동합니다.)
어떻게 해결할 수 있습니까?
오류 로그 :
CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 ambiguous column name: flag.
"사용자"모델 :
class User extends CActiveRecord
{
public function relations()
{
return array(
'FLAG' => array(self::HAS_ONE, 'UserFlag','id'),
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('name',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('flag',$this->flag,true);
$criteria->with = array(
'FLAG' => array(
'select' => 'FLAG.flag',
'together' => true,
)
);
$criteria->compare('FLAG.flag',$this->flagFromB,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=> array(
'attributes'=>array(
'flagFromB' => array(
'asc' => 'FLAG.flag',
'desc' => 'FLAG.flag DESC',
),
'*',
),
),
));
}
"UserFlag"모델 : 테이블 tbl_userFlag (ID, 플래그)
"사용자에
링크 보기 :
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'username',
'password',
'email',
'flag',
array(
'name' => 'flagFromB',
'type' => 'raw',
'value' => '$data->FLAG->flag',
),
array(
'class'=>'CButtonColumn',
),
),
));