2016-10-25 6 views
1

Ich habe eine Strukturtabelle wie dieseYii2 aktualisieren Eltern Kind

enter image description here

Ich möchte Feldaufzeichnungsdaten goid = 1 ändern, aber ich, wie Sie meinen Code unten sehen können, gibt es Limit Looping. Gibt es einen besseren Weg, es zu tun?

public function actionShareGoid($folder) 
{ 
    $one = DokumenFolder::findOne($folder); 
    $one->goid = '1'; 
    $one->update(false); 

    $models_1 = DokumenFolder::find()->where(['parent_id'=>$one->id])->all(); 
    foreach ($models_1 as $key_1 => $model_1) { 
     $model_1->goid = '1'; 
     $model_1->update(false); 
     $models_2 = DokumenFolder::find()->where(['parent_id'=>$model_1->id])->all(); 
     foreach ($models_2 as $key_2 => $model_2) { 
      $model_2->goid = '1'; 
      $model_2->update(false); 
      $models_3 = DokumenFolder::find()->where(['parent_id'=>$model_2->id])->all(); 
      foreach ($models_3 as $key_3 => $model_3) { 
       $model_3->goid = '1'; 
       $model_3->update(false); 
       $models_4 = DokumenFolder::find()->where(['parent_id'=>$model_3->id])->all(); 
       foreach ($models_4 as $key_4 => $model_4) { 
        $model_4->goid = '1'; 
        $model_4->update(false); 
       } 
      } 
     } 
    } 

    return $this->redirect(Yii::$app->request->referrer); 
} 

Antwort

1

Dank an jemanden, habe ich die Antwort bekommen.^_^

Also hier ist es ...

public function folderParent($id) 
{ 
    $models = DokumenFolder::find()->where(['parent_id'=>$id])->all(); 
    foreach ($models as $key => $model) { 
     $model->goid = '1'; 
     $model->update(false); 
    } 
} 

public function actionShareGoid($id) 
{ 
    $models = DokumenFolder::find()->where(['parent_id'=>$id])->all(); 
    foreach ($models as $key => $model) { 
     $this->folderParent($model->id); 
    } 
    return $this->redirect(Yii::$app->request->referrer); 
}