在yii中从数据库获取特定行

时间:2014-04-09 11:31:27

标签: php yii

我正在工作的网站上工作。并且使用Yii.I有gridview,列出了用户发布的所有工作,但我只想显示特定用户发布的工作。如果用户已登录作为管理员,它应该只显示由admin发布的作业。我已经尝试了以下的事情,但没有工作。

 In Controller.


//codes


 public function actionViewJob() {

       $user_id = Yii::app()->session['user_id'];

        /* For User Authentication */
        if (Yii::app()->user->getId() === null)
            $this->redirect(array('site/login'));
        /* For User Authentication */

        $model = ViewJob::model()->find(array(
            'select' => array('*'), "condition" => "user_id= $user_id",
        ));

        $params = array('model' => $model,
        );

        $this->render('viewjob', $params);
    }

 function as search() in model ViewJob.


    public function search()
    {

     $criteria=new CDbCriteria;

     $criteria->compare('key_skills','Admin',true);
     return new CActiveDataProvider('viewjob', array(
       // 'criteria'=>$criteria,
        'sort'=>array(
            'defaultOrder'=>'key_skills ASC',
        ),
    ));


    }

我在这里做错了什么。?它仍然列出了整个数据。

2 个答案:

答案 0 :(得分:0)

尝试

 $model=ViewJob::model()->findByAttributes(array('user_id'=>Yii::app()->user->id));

答案 1 :(得分:0)

试试这个

 $model = ViewJob::model()->findAll("user_id=$user_id");

 /*
 1. find() can fetch first matched row, where as findAll() fetches all matched rows in the db table
 2. "user_id=$user_id" is equals to WHERE user_id=$user_id
 */

代码改进(Yii方式)

  1. 如下所示注册用户会话

    Yii::app()->user->setState('user_id',$value_variable); //Set the session
    Yii::app()->user->getState('user_id'); //Get the session
    
  2. 您可以将accessRules()用于以下代码

     if (Yii::app()->user->getId() === null)
        $this->redirect(array('site/login'));
    

    public function accessRules()
    {
        return array(            
           array('allow',
            'actions' => array('viewJob'),
            'users' => array('@'),
            ----
            ---