如何在Yii框架中获取用户ID而不是名称?

时间:2014-02-22 04:56:24

标签: php yii

我在UserIdentity类中添加了getId方法来获取用户ID而不是用户名,但它不会获取用户ID。添加此getId方法后,以下两个都将导致为空

          1. Yii::app()->user->getId();
          2. Yii::app()->user->id;

我在这里发布了UserIdentity类,请帮忙解决这个问题

   class UserIdentity extends CUserIdentity
     {
   private $_id;
    public function authenticate()
{       
    $users= User::model()->findByAttributes(array('name'=>$this->name));
    $password= User::model()->findByAttributes(array('password'=>$this->password));
        if($users===null) {
            $this->errorCode = self::ERROR_USERNAME_INVALID;                
        }
        else if($password===null) {
            $this->errorCode = self::ERROR_PASSWORD_INVALID;
        }
        else {        
            $this->_id=$users->id;   
            $this->errorCode = self::ERROR_NONE;

        }
        return !$this->errorCode;
}       
public function getId()
{
   return $this->_id;
}

}

我尝试使用CDbCriteria从用户模型获取id,它只获取usename列,id列将变为空

2 个答案:

答案 0 :(得分:4)

这是一个很好的解决方案:

检查以下步骤:

http://www.yiiframework.com/wiki/80/add-information-to-yii-app-user-by-extending-cwebuser-better-version/

执行此步骤后,请调用此方法:

Yii::app()->user->id;
Yii::app()->user->name;
Yii::app()->user->email;

答案 1 :(得分:3)

您可以使用其他方法设置用户ID

else {        
        $this->_id=$users->id;
        $this->setState('user_id', $users->id);

        $this->errorCode = self::ERROR_NONE;

    }

并像这样打电话

Yii::app()->user->user_id;