Yii Cgridview具有来自关系模型的重复列名

时间:2017-11-22 05:14:09

标签: php gridview yii cgridview relational-model

我正在使用Cgridview来显示"用户"来自" UserFlag"的关系模型模型。

"用户"模型 - > tbl_user(id,name,password,flag) "标志"模型 - > tbl_userFlag(id,flag)

两种型号的id表示相同。 但是,标志的含义不同(我无法修改数据库,因此必须坚持使用它),我需要在同一个gridview上显示它们。

我遇到的问题是 gridview可以正确显示两个标志,但是当我尝试从"用户"中排序和过滤标志时,它会失败并显示错误。模型。 (但是排序和过滤对#34; 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,flag)

"用户"视图:

$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',
        ),
    ),
));

1 个答案:

答案 0 :(得分:0)

你可以改变你的模态关系。

User.php模态文件。

MulticastAddressTag

我希望它会有所帮助。