Yii高级搜索不使用基于

时间:2015-11-08 09:59:15

标签: php mysql yii yii-cactiverecord

在我的系统中,我有3种类型的用户, 管理员 主管 < em>普通用户 。每种类型的用户都有一个 主管 ,他/她是另一个用户 假设我们有两个表usersdocuments,其关系如下:enter image description here

此处documents表格与usersuser_id列相关 在我的系统中,我根据登录的用户类型有一个Documents模块的CGridview。如果登录的用户类型为 管理 ,则会显示document表的所有条目。

如果登录的用户类型为 主管 ,那么它将仅显示来自documents表的那些条目,其中documents.user_id等于users.user_id {1}},users.sp_id = LoggedInUser,如果我无法清楚表达,请对不起。

我可以使用Documents模型中的关系在CGridview中显示数据。

public function relations(){
 'users' => array(self::BELONGS_TO, 'Users', 'user_id'),
}

Document模型中,我声明了两个自定义函数来返回所需的DataProvider。那些是:

public function searchByUser($id) { $criteria=new CDbCriteria; $criteria->condition = "user_id=$id"; return new CActiveDataProvider($this, array( 'criteria'=>$criteria, 'sort'=>array( 'defaultOrder'=>'doc_id DESC', ), )); }

public function searchBySupervisor($supervisor_id)
    {
        $criteria=new CDbCriteria;

        $criteria->with=array('users'); 
        $criteria->compare('user_id',$this->user_id,true);      
        $criteria->condition = "sp_id=$supervisor_id AND status='active'";
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
            'sort'=>array(
                'defaultOrder'=>'doc_idDESC',
            ),
        ));
    }

在我的/documents/admin视图中,我根据CGridview中的登录用户使用 dataProvider

if ($UserType=="Normal_User"){
        $this->widget(
        'booster.widgets.TbGridView', array(
        'type' => 'striped bordered condensed',
        'dataProvider'=>$model->searchByUser(Yii::app()->user->getId()),


elseif($UserType == "supervisor"){

        $this->widget(
            'booster.widgets.TbGridView', array(
            'type' => 'striped bordered condensed',
            'dataProvider'=>$model->searchBySupervisor(Yii::app()->user->getId()),

除了我的搜索功能不起作用外,一切正常。如果我以主管身份登录,则意味着如果我使用此:'dataProvider'=>$model->searchBySupervisor(Yii::app()->user->getId()),数据提供者,我的高级搜索选项不会根据搜索参数过滤网格视图,而是返回相同的数据。

0 个答案:

没有答案