相关疑难解决方法(0)

Yii将过滤器添加到CGridView中的虚拟属性并使其可排序

我有以下型号:

User 列{id,user_name,password,user_type}

Admin 列{id,user_id,full_name,..... etc}

Editor 列{id,user_id,full_name,... etc}

关系是 User:'admin' => array(self::HAS_ONE, 'Admin', 'user_id'),'editor' => array(self::HAS_ONE, 'Editor', 'user_id'),

Admin : 'user' => array(self::BELONGS_TO, 'User', 'user_id'),

Editor : 'user' => array(self::BELONGS_TO, 'User', 'user_id'),

现在我fullNameUserModel中设置了一个虚拟属性,如下所示

public function getFullName()

{

    if($this->user_type=='admin')

        return $this->admin->full_name;

    else if($this->user_type=='editor')

        return $this->editor->full_name;


}
Run Code Online (Sandbox Code Playgroud)

我可以fullName在gridview中显示虚拟属性,但是如何在属性中添加过滤器并使其在gridview中可排序?

UPADTE 1:

我根据@Jon的答案更新了模型search()函数,如下所示

    public function search()
        {


            $criteria=new CDbCriteria;
            $criteria->select=array('*','COALESCE( editor.full_name,admin.first_name, \'\') AS calculatedName');
            $criteria->with=array('editor','admin');
            $criteria->compare('calculatedName',$this->calculatedName,true);
            $criteria->compare('email',$this->email,true);
            $criteria->compare('user_type',$this->user_type);

            return new CActiveDataProvider($this, array(
                'criteria'=>$criteria,


));
    } …
Run Code Online (Sandbox Code Playgroud)

php yii yii-components

9
推荐指数
1
解决办法
8394
查看次数

标签 统计

php ×1

yii ×1

yii-components ×1