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 に答える