我有一对一的关系,表格Thing
中有ThingExtra
的额外字段。
我正在尝试初始化新的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中非常适合我们
答案 0 :(得分:3)
您不能指定这样的关系,您可以尝试这样做:
public function init(){
if($this->isNewRecord){
$this->populateRelation('extra', new ThingExtra());
}
}
详细了解{{3}}