/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $this->validate($request, ['name' => 'required|unique:projects|max:255', 'rank' => 'required|integer', 'date_start' => 'date', 'date_end' => 'date', 'descriptions.id' => 'integer', 'descriptions.rank' => 'required|integer', 'descriptions.text' => 'required|max:500']); DB::beginTransaction(); $project = Project::find($id); if (!$project->save($request->only(['name', 'rank', 'date_start', 'date_end']))) { DB::rollback(); return redirect()->back()->withError('Could not save project'); } $descriptions = []; foreach ($request->get('descriptions') as $description) { if ($description['id']) { $descriptions[] = Description::find($description['id']); } else { $descriptions[] = new Description($description); } } if (!$project->descriptions()->saveMany($descriptions)) { DB::rollback(); return redirect()->back()->withError('Could not save description'); } DB::commit(); return redirect('admin'); }
public static function getTutorialStepByProjectId($projID) { $steps = \App\Project::find($projID)->descriptions->sortBy('step'); foreach ($steps as $step) { $images = \App\Description::find($step->id)->images; $step->images = $images; $materials = \App\Description::find($step->id)->materials; $step->materials = $materials; } //dump($steps); return $steps; }