从表单输入设置Yii中的相关模型数组

时间:2012-09-05 10:12:23

标签: php yii

在Yii中,以下内容不起作用(关系数组保持为空)并且不会返回错误:

foreach ($data as $k => $relatedModelData){
    //construct the related model from the data passed in
    ...
    $model->arrayOfRelatedModels[] = $relatedModel;
}

相反,我必须这样做:

foreach ($data as $k => $relatedModelData){
    //construct the related model from the data passed in
    ...
    $tempArray[] = $relatedModel;
}

$model->arrayOfRelatedModels = $tempArray;

我想知道为什么会这样,或者我在第一个例子中是否有一些错误?

1 个答案:

答案 0 :(得分:1)

@o_nix是对的,你应该得到:

Indirect modification of overloaded property错误。这是我最近遇到过的事情。

这意味着Yii通过__get函数返回一个魔术属性,该对象在类中并不存在,并且当您设置此对象时它会通过魔术__set函数。这意味着如果您尝试更改对象本身内部的某些内容(例如内部数组值),它就不知道如何处理它们,因此它会抛出该注意事项而不管它。

为了解决这个问题,你做了正确的事情,修改了一个新的局部变量,并在完成后将整个对象设置为此。

<强> P.S
您可能将PHP配置设置为隐藏通知,这就是为什么它是静默的。

希望清除它