3

在 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;

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

4

1 回答 1

1

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

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

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

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

PS
您可能将您的PHP配置设置为隐藏通知,这就是它保持沉默的原因。

希望清除它

于 2012-09-07T09:46:33.053 回答