我已阅读有关如何制作 CWebUser 子类的教程并按照说明进行操作。路径都有效,并且代码进入了正确的方法,但是从我的 getter 返回的值始终为零。
class PersonUser extends CWebUser {
// Store model to not repeat query.
private $_person;
// Load user model.
public function loadPerson($id=null, $duration=0)
{
$this->login($id,$duration);
$this->_person=Person::model()->findByPk(Yii::app()->user->id);
}
public function getPerson()
{
return $this->_person;
//return Person::model()->findByPk($this->id);
}
}
$this->_person->first_name
如果我在设置后在 loadPerson 方法中回显,_person
我会得到我期望的值。但是,在以后的任何时候,如果我要求Yii::app()->user->person
,该getPerson()
方法将被调用,但$this->_person
现在为空。我知道它正在进入那里,如果我取消注释下面的行并让它每次都查找该人,它就会起作用。
这是 Yii 的问题吗?我真的很希望能够缓存 person 对象,这样我就可以在整个会话期间引用它,而不必对数据库进行更多调用。我错过了什么??