Обновление данных в таблицу из динамически созданного поля ввода

У меня есть 2 модели Tour.php

public function Itinerary() { return $this->hasMany('App\Itinerary', 'tour_id'); } 

а также

Itinerary.php

 public function tour() { return $this->belongsTo('App\Tour', 'tour_id'); } 

туры стол:

id|title|content

таблица маршрутов :

id|tour_id|day|itinerary

Я использовал vue js для создания или добавления и удаления поля ввода для дня и планирования динамически. И использовал следующий код в методе tour.store для вставки в таблицу itineraries :

  $count = count($request->input('day')); $temp_day = $request->input('day'); $temp_itinerary = $request->input('itinerary'); for($i = 0; $i < $count; ++$i) { $itinerary = new Itinerary; $itinerary->tour_id = $tour->id; $itinerary->plan = $temp_itinerary[$i]; $itinerary->day = $temp_day[$i]; $itinerary->save(); } 

И успешно вставлял записи. И применял тот же код в методе tour.store . Вместо обновления строк он вставлял новые строки в таблицу. Что было бы лучшим решением для этого?

Для обновления попробуйте этот код

 $itinerary = Itinerary::find($tour_id); $itinerary->plan = $temp_itinerary[$i]; $itinerary->day = $temp_day[$i]; $itinerary->save(); 

То, как вы используете, – это вставка / создание новых записей. Для обновления вы можете использовать.

 Itinerary::find($tour_id)->update( ['column_name'=> value] ); 

Где метод find принимает первичный ключ таблицы.

Это обновит вашу существующую запись. Вы можете обновить столько столбцов, сколько хотите, чтобы передать их в массиве. Вы также можете использовать метод save как указано в другом ответе.

Проверить Laravel Update Eloquent

РЕДАКТИРОВАТЬ

 $iterneary = Itenerary::where('tour_id', $tour_id)->first(); 

Теперь вы можете обновить этот объект iterneary до того, что захотите.

вот как я это сделал. Сначала сохранили все туры в $ tours [].

 foreach($tours as $tour) { $itinerary->tour()->updateOrCreate(['id'=> $tour['id']],$tour); } 

updateOrCreate, потому что вам может потребоваться добавить новые туры во время обновления. Я знаю, что это точно не отвечает на вашу проблему, но это может по крайней мере дать вам представление.