gpt4 book ai didi

php - Yii2 在 init 上设置新的事件记录关系

转载 作者:行者123 更新时间:2023-12-02 15:17:05 24 4
gpt4 key购买 nike

我有一个一对一的关系,其中在表 ThingExtra 中有用于 Thing 的额外字段。

我正在尝试初始化一个新的 ThingExtra 以在创建新的 Thing 时使用,然后在 Thing 时保存它们已保存:

class Thing extends ActiveRecord
{
public function init(){
if($this->isNewRecord){
$this->extra = new ThingExtra();
}
}

public function getExtra(){
return $this->hasOne(ThingExtra::className(),['thing_id' => 'id']);
}

public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
$this->extra->thing_id = $this->id;
$this->extra->save();
}
}

现在,当我尝试创建一个 Thing 时:

$thing = new Thing;

我得到以下异常:

Exception: Setting read-only property: Thing::extra

这附近有没有?还是我的设计完全有缺陷?

这种方法在 Yii1.1 中非常适合我们

最佳答案

你不能像这样分配关系,你可以试试这个:

public function init(){
if($this->isNewRecord){
$this->populateRelation('extra', new ThingExtra());
}
}

阅读更多关于 ActiveRecord::populateRelation() 的信息

关于php - Yii2 在 init 上设置新的事件记录关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39641832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com