CWebUserのサブクラスを作成する方法に関するチュートリアルを読み、指示に従いました。パスはすべて機能し、コードは正しいメソッドに入りますが、ゲッターから返される値は常にnilです。
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
現在はnullになっています。私はそれがそこに入っていることを知っています、私が下の行のコメントを外して、それが毎回人を調べさせるならば、それはうまくいきます。
これはYiiの問題ですか?個人オブジェクトをキャッシュして、データベースをさらに呼び出さなくてもセッション全体で参照できるようにしたいと考えています。何が足りないの?