#php #activerecord #yii
#php #activerecord #yii
Вопрос:
У меня есть 2 модели AR Yii. Модели ParentRecord и ChildRecord.
Родительский элемент имеет дочерний элемент HAS_ONE.
При создании нового родительского элемента, как я могу гарантировать, что дочерний элемент также всегда создается. Родителю всегда нужен дочерний элемент.
было бы так же просто, как сделать это в родительском классе AR?
public function onAfterConstruct()
{
if ($this->isNewRecord){
$this->master = new ChildRecord;
}
}
Я не хочу создавать оба в контроллере и сохранять их там, я хочу только создавать и сохранять только родительский элемент, и всегда создавать и сохранять дочерний элемент.
У меня есть массив relations(), который работает нормально.
Комментарии:
1. вы нашли то, что искали?
Ответ №1:
просто создайте дочернюю запись после успешного сохранения нового родительского элемента
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();
}
Комментарии:
1. как это доступно после создания нового родительского элемента, но еще не сохраняет его? Я хотел бы взаимодействовать с отношением перед сохранением.
2. в родительской модели вы можете использовать эту функцию, то же самое касается отношений