在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;
我想知道为什么会这样,或者我在第一个例子中是否有一些错误?
答案 0 :(得分:1)
@o_nix是对的,你应该得到:
Indirect modification of overloaded property
错误。这是我最近遇到过的事情。
这意味着Yii通过__get
函数返回一个魔术属性,该对象在类中并不存在,并且当您设置此对象时它会通过魔术__set
函数。这意味着如果您尝试更改对象本身内部的某些内容(例如内部数组值),它就不知道如何处理它们,因此它会抛出该注意事项而不管它。
为了解决这个问题,你做了正确的事情,修改了一个新的局部变量,并在完成后将整个对象设置为此。
<强> P.S 强>
您可能将PHP配置设置为隐藏通知,这就是为什么它是静默的。
希望清除它