2016-10-25 8 views
1

私はこのYii2更新親子

enter image description here

のような構造のテーブルを持っている私は、私はあなたが私のコードを怒鳴るを見ることができるように、制限のループがありますレコードデータフィールドgoid = 1を変更したいのですが、。それを行うより良い方法はありますか?

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); 
} 

答えて

1

私は答えを得ました。^_ ^だから、ここにある

...

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); 
} 
関連する問題