updateOrCreate
Вы также можете столкнуться с ситуациями, когда вы хотите обновить существующую модель или создать новую модель, если ее не существует. Laravel предоставляет метод updateOrCreate для выполнения этого за один шаг. Как и метод firstOrCreate, updateOrCreate сохраняет модель, поэтому нет необходимости вызывать save ():
updateOrCreate (array $ attribute, array $ values = [])
Это должно быть так. Но убедитесь, что в модели
опция1
//Option 1
foreach($request->rows as $row) {
$db = Book::updateOrCreate(
[
'id' => $row['id'] ?? null
],
[
'author_id' => $request->author_id,
'publisher_id' => $request->publisher_id,
'title' => $row['title'],
'genre' => $row['genre']
]
);
}
опции2
// Options 2
foreach($request->rows as $row) {
$input = [
'author_id' => $request->author_id,
'publisher_id' => $request->publisher_id,
'title' => $row['title'],
'genre' => $row['genre']
];
if (isset($row['id'])) {
if($db = Book::find($row['id'])) {
$db->update($input);
continue;
}
}
Book::create($input);
}
РЕДАКТИРОВАТЬ:
ошибки * показывает, что ваши маршруты не приняли метод POST .. измените его на метод POST
Например: Route::post()
вместо Route::get()