Как вставить запись при ее отсутствии и обновить при наличии + получить ее id?
Как можно вставить запись в таблицу SQL чтобы при ее наличии она была обновлена (или лучше проигнорирована), а иначе создана + получить ее id?
Пробовал insertOrIgnore, updateOrCreate, не работает как нужно, а именно не могу получить id или же id получаю, но не работает обновление записи (SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry)
$user = User::updateOrCreate(
// Поля по которым ищем запись
['email' => request('email')],
// Поля которые обновляем если запись существует
['name' => request('name')]
);
// Вот ваш ID
$id = $user->id;
Плохо, что матом не ругается. Не должно быть id в реквесте, а не в fillable. Методы типа updateOrCreate не для одного роута для всех crud операций, а когда тебе заранее неизвестно есть ли модель в указанном запросе.