/** * Updates Stage into database * * @param Stage $stage * @param array $input * * @return Stage */ public function update($stage, $input) { $stage->fill($input); $stage->save(); return $stage; }
/** * Редактирование проекта * Суть такова: У каждого стадии есть id-шник. Если они приходять сюда POST-ом * значит они не были удалены во view-шке. Если же стадия была удалена во view-шке * соответсвенно ее надо удалить в базе. * Добавленные стадии создаются в обычном порядке. * Проверен (21.12.15) - все ровно */ public function actionUpdate($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { $model->deadline = date('Y-m-d', strtotime($model->deadline)); $model->save(); $stage_ids = $_POST['obj_id']; //id-шники всех стадий foreach ($model->stages as $stage) { $exist = false; foreach ($stage_ids as $k => $v) { if ($stage->id == $v) { $exist = true; } } if ($exist == false) { $stage->delete(); } } if (isset($_POST['stage_name'])) { $stage_name = $_POST['stage_name']; $stage_description = $_POST['stage_description']; $stage_deadline = $_POST['stage_deadline']; $stage_who = $_POST['stage_who']; foreach ($stage_name as $k => $v) { $exist = Stage::findOne($stage_ids[$k]); if ($exist) { $exist->name = $v; $exist->description = $stage_description[$k]; $exist->deadline = strtotime($stage_deadline[$k]); $exist->user_id = $stage_who[$k]; $exist->save(); } else { $stage = new Stage(); $stage->name = $v; $stage->description = $stage_description[$k]; $stage->deadline = strtotime($stage_deadline[$k]); $stage->user_id = $stage_who[$k]; $stage->project_id = $model->id; $stage->status = R::STAGE_CREATED; $stage->create_time = time(); $stage->save(); } } } return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('update', ['model' => $model]); } }