我正在工作的网站上工作。并且使用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',
),
));
}
我在这里做错了什么。?它仍然列出了整个数据。
答案 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方式)
如下所示注册用户会话
Yii::app()->user->setState('user_id',$value_variable); //Set the session
Yii::app()->user->getState('user_id'); //Get the session
您可以将accessRules()用于以下代码
if (Yii::app()->user->getId() === null)
$this->redirect(array('site/login'));
像
public function accessRules()
{
return array(
array('allow',
'actions' => array('viewJob'),
'users' => array('@'),
----
---