public function update($id) { $meal = Meal::find($id); $meal->name = Input::get('name'); $meal->description = Input::get('description'); $meal->street = Input::get('street'); $meal->city = Input::get('city'); $meal->zip_code = Input::get('zip_code'); $meal->seats = Input::get('seats'); // get and parse date $date = Input::get('meal_date'); $date_array = explode("/", $date); $day = (int) $date_array[0]; $month = (int) $date_array[1]; $year = (int) $date_array[2]; // get and parse time $time = Input::get('meal_time'); $time_array = explode(":", $time); $hour = (int) $time_array[0]; $minutes = (int) $time_array[1]; // create new dateTime $date_time = Carbon::create($year, $month, $day, $hour, $minutes); $meal->meal_date_time = $date_time; // create ingredients $ingredients = Input::get('ingredient'); $meal_ingredients = array(); foreach ($ingredients as $ingredient) { $meal_ingredients[] = Ingredient::firstOrNew(array('name' => $ingredient['name']))->fill(array('unit' => $ingredient['unit'], 'quantity' => $ingredient['quantity'])); } // delete existing ingredients foreach ($meal->ingredients as $ingredient) { if (!in_array($ingredient, $meal_ingredients)) { $ingredient->delete(); } } //save into the DB $meal->save(); $meal->ingredients()->saveMany($meal_ingredients); // redirect Flash::success('Votre repas a bien été mis à jour!'); return Redirect::route('meals.show', $meal); }