在yii中,我如何确保始终与父模型一起创建HAS_ONE子关系

时间:2014-06-30 09:32:50

标签: php activerecord yii

我有2个Yii AR型号。 ParentRecord和ChildRecord模型。

父母HAS_ONE孩子。

创建新父级时,如何确保始终创建子级。父母总是需要孩子。

在父AR类中这么简单吗?

public function onAfterConstruct()
{
    if ($this->isNewRecord){
        $this->master = new ChildRecord;
    }
}

我不想在控制器中同时创建它们并将它们保存在那里,我只想创建和保存父项,并始终创建和保存子项。

我的relations()数组运行正常。

1 个答案:

答案 0 :(得分:2)

只需在成功保存新父级

后创建子记录
public function afterSave()
{
    if($this->isNewRecord)
    {
        $child = new ChildRecord;
        $child->parent_id = $this->id;
        $child->save();
    }

   return parent::afterSave();
}

更新你可以使用关系

public function afterSave()
{
    if($this->isNewRecord)
    {
        $this->childRelation = new ChildRecord;
        $this->childRelation->parent_id = $this->id;
        $this->childRelation->save();
    }

   return parent::afterSave();
}