@vitkuz573

Как вставить запись при ее отсутствии и обновить при наличии + получить ее id?

Как можно вставить запись в таблицу SQL чтобы при ее наличии она была обновлена (или лучше проигнорирована), а иначе создана + получить ее id?
Пробовал insertOrIgnore, updateOrCreate, не работает как нужно, а именно не могу получить id или же id получаю, но не работает обновление записи (SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry)
  • Вопрос задан
  • 169 просмотров
Решения вопроса 2
@kandrash
Кратко о себе
А что не так с updateOrCreate?
$user = User::updateOrCreate(
    // Поля по которым ищем запись
    ['email' => request('email')],
    // Поля которые обновляем если запись существует
    ['name' => request('name')]
);

// Вот ваш ID
$id = $user->id;
Ответ написан
Комментировать
@Kostik_1993
Web Developer
$data = $request->all();
$model->updateOrCreate(
  ['id' => $request->id],
  $data->except(['id'])
);
$id = $model->id;

По поводу $data->except(['id'])
Если ругается на ваш ID значит он у вас есть в fillabl, чего быть не должно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы