Php Yii2在init上设置新的活动记录关系
我有一对一的关系,在表Php Yii2在init上设置新的活动记录关系,php,activerecord,yii2,Php,Activerecord,Yii2,我有一对一的关系,在表ThingExtra中有Thing的额外字段 我正在尝试初始化一个新的ThingExtra以在创建一个新的对象时使用,然后在保存对象时同时保存它们: class Thing extends ActiveRecord { public function init(){ if($this->isNewRecord){ $this->extra = new ThingExtra(); } }
ThingExtra
中有Thing
的额外字段
我正在尝试初始化一个新的ThingExtra
以在创建一个新的对象时使用,然后在保存对象时同时保存它们:
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 = new Thing;
我得到以下例外情况:
Exception: Setting read-only property: Thing::extra
这周围还有什么吗?还是我的设计完全有缺陷
在Yii1.1中,这种方法对我们非常有效。您不能分配这样的关系,您可以尝试以下方法:
public function init(){
if($this->isNewRecord){
$this->populateRelation('extra', new ThingExtra());
}
}
阅读有关的详细信息如果无法分配这样的关系,可以尝试以下方法:
public function init(){
if($this->isNewRecord){
$this->populateRelation('extra', new ThingExtra());
}
}
阅读更多关于Thank的信息可能会将null
作为第二个参数,因为可能已经创建了一个新的参数。看起来我不正确,需要new ThingExtra()
!Thank可以将null
作为第二个参数,因为可能已经创建了一个新参数。看起来我不正确,需要newthingextra()
!