@Zhandev

Как не сохранять запись если id уже существует на laravel?

foreach ($items as $item) {
            $carObj = new Car();

            $carObj->id = $item['id'];
            $carObj->make = $item['make'];
            $carObj->model = $item['model'];
            $carObj->price = $item['price'];
            $carObj->href = $item['href'];
            $carObj->year = $item['year'];
            $carObj->created = $item['created'];
            $carObj->save();
        }

Как не записывать запись, если такой id уже существует?
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
Settler1
@Settler1
Правильно написанный вопрос - половина ответа
Как не записывать запись, если такой id уже существует?

Сделайте try catch

try {
            $carObj = new Car();
            $carObj->id = $item['id'];
            $carObj->make = $item['make'];
            $carObj->model = $item['model'];
            $carObj->price = $item['price'];
            $carObj->href = $item['href'];
            $carObj->year = $item['year'];
            $carObj->created = $item['created'];
            $carObj->save();
} catch (Illuminate\Database\QueryException $e) {
    /* nothing */
}

Таким образом мы ловим исключение и просто пропускаем его. Ошибка в таком случае не остановит скрипт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Zhandev Автор вопроса
На данный момент, если id существует, то выводится ошибка
Ответ написан
Комментировать
@Skrolea
А вам надо id сохранять? У вас не автоинкримент в базе?
Ответ написан
abler98
@abler98
Software Engineer
if ($car = Car::firstOrNew(['id' => $item['id']) and !$car->exists) {
    $car->make = $item['make'];
    ...
    $car->save();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы