我有一个用户和帐户模型。关系是User属于Account,Account有很多User。
这是两者的模型代码:
用户模型:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'account' => array(self::BELONGS_TO, 'Account', 'account_id'),
);
}
账户模式:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'users' => array(self::HAS_MANY, 'User', 'account_id'),
'userCount'=>array(self::STAT,'User','account_id'),
);
}
我在我的UserIdentity.php中有这段代码,用于登录 WAS 工作得很好:
public function authenticate()
{
$user=User::model()->findByAttributes(array('username'=>$this->username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else{
if($user->password!==$user->encrypt($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else{
$this->_id=$user->id;
if($user->last_login_time==null)
$lastLogin=time();
else
$lastLogin=strtotime($user->last_login_time);
$this->setState('lastLoginTime', $lastLogin);
$this->setState('account',array('id'=>$user->account->id,'name'=>$user->account->name,));
$this->errorCode=self::ERROR_NONE;
}
}
return !$this->errorCode;
}
当我将另一个用户添加到帐户时,它开始出现错误:
PHP 注意:试图获取 non-object 的属性。
错误指向
$this->setState('account',array('id'=>$user->account->id,'name'=>$user->account->name,));
当分成多行时:
'id'=>$user->account->id,
是错误所在。
为了解决这个问题,我只是将其更改为:
$account=Account::model()->findByPk($user->account_id);
$this->setState('account',array('id'=>$account->id,'name'=>$account->name,));
因此,当我有一个用户时,这种关系工作得很好,但是当我有 2 个用户时,这种关系就失败了。我可以像上面一样继续使用 Yii,但我确实喜欢直接访问对象的简单性。我没有正确建立关系吗?为什么现在不能在一个帐户中使用 2 个用户?
编辑:
var_dump($user)
- http://pastebin.com/TEyrFnme
同样有趣的是,我可以使用:从帐户访问用户$users=$account->users;
并访问所有$user[0]
属性就好了。所以反过来,这种关系似乎在起作用,只是前进似乎有困难。