0
我有一對一的關係,其中表ThingExtra
中有Thing
的額外字段。Yii2在初始化時設置了新的活動記錄關係
我想初始化一個新的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
感謝大概可以作爲第二個參數,使用'null'離開,因爲無論如何都可能創建一個新的參數。 – Arth
看起來我不正確,並且需要'new ThingExtra()'! – Arth