2016-10-25 4 views
1

나는 구조 테이블 내가 기록 데이터 필드 금광 = 1을 변경하려면이Yii2 업데이트 부모 자식

enter image description here

처럼,하지만 당신이 내 코드 울부 짖는 소리를 볼 수, 루핑 제한 I있다. 그것을 할 수있는 더 좋은 방법이 있습니까?

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