Laravel 5.8, php 7.3, Mysql, Ubuntu
Ошибка
Integrity constraint violation: 1062 Duplicate entry for key 'user_locations_user_id_unique' (SQL: insert into `user_locations` поля).
Ошибка только на продакшене. Тесты не воспроизводят. Возникает иногда у некоторых пользователей по непонятным причинам. Эти пользователи ничем не отличаются от других. Смотрел запись метрики – пользователь добавляет данные без каких-либо проблем. Делает только ошибки Form Request валидатора (не заполняет обязательное поле), затем заполняет - запись сохраняется и в логах ошибка. Думал, что исправил через $request->except('id', 'user_id') Но в логах опять появилось (20 записей от одного пользователя, хотя щелкал сохранить 2 раза). Код
public function store(ContactRequest $request)
{
$user = Auth::user();
$country = Country::find($request->input('country_id'));
if (!$id = $request->input('id')) {
$location = new UserLocation;
$request['user_id'] = $user->id;
$location=$location->create($request->all());
}else{
$location = UserLocation::findOrFail($id);
}
if (!$country->isOtherCountry()) {
$request['other_country'] = null;
$request['other_code'] = null;
}
if ($location->update($request->except('id', 'user_id'))) {
return response()->json(['success_msg'=>'Адрес сохранен']);
}
}
Это может быть связано с продакшн сервером? Что проверить?
Update
Переписал создание через отношение пользователя
$user->location()->create($request->all());