/** * * @param Request $request * @param Exercise $exercise * @return mixed */ public function update(Request $request, Exercise $exercise) { // Create an array with the new fields merged $data = array_compare($exercise->toArray(), $request->only(['name', 'step_number', 'default_quantity', 'description', 'target', 'priority', 'frequency'])); $exercise->update($data); if ($request->has('stretch')) { $exercise->stretch = $request->get('stretch'); $exercise->save(); } if ($request->has('series_id')) { $series = Series::findOrFail($request->get('series_id')); $exercise->series()->associate($series); $exercise->save(); } if ($request->has('program_id')) { $program = ExerciseProgram::findOrFail($request->get('program_id')); $exercise->program()->associate($program); $exercise->save(); } if ($request->has('default_unit_id')) { $unit = Unit::where('for', 'exercise')->findOrFail($request->get('default_unit_id')); $exercise->defaultUnit()->associate($unit); $exercise->save(); } return $this->responseOkWithTransformer($exercise, new ExerciseTransformer()); }