0

我对 Yii 的 activerecord-relation-behavior 扩展有疑问。

我有一个主模型:User和一个子模型:(UserPerson类型的配置文件)

这两个模型之间的关系已设置,模型行为使用yiiext,但我仍然无法连接它们。

在这种情况下$this是一个模型,它扩展了User模型并称为RegistrationModel

$person = new \UserPerson();
$person->full_name = $this->name;
$person->birthday = $this->birthday;
$person->gender = $this->gender;

$this->person = $person;
$this->person->save();

这样,我应该可以运行:$this->save() 但是我收到此错误:

您无法保存具有新相关记录的记录!

我尝试了很多变体,但只有丑陋的、无关系的版本有效。:(

$person->user_id = $this->id;
//..
$person->save();

有人对这个问题有建议吗?

4

1 回答 1

1

答案在扩展的存储库中

“您不能保存有新相关记录的记录!”

您已将一条记录分配给尚未保存的关系(它尚未在数据库中)。由于 ActiveRecord Relation Behavior 需要其主键将其保存到关系表中,因此这将不起作用。在保存相关记录之前,您必须对所有新记录调用 ->save()。

所以你必须保存相关模型,添加相关元素,然后保存模型。

$person = new \UserPerson();
$person->full_name = $this->name;
$person->birthday = $this->birthday;
$person->gender = $this->gender;
$person->save();
//now $person has a primary key

$this->person = $person;
$this->person->save();
于 2013-04-29T09:56:56.117 回答