Мне очень трудно определить этот заголовок. По сути, моей таблице patients
нужен столбец уникальных идентификаторов, и мы достигаем этого путем объединения имени и фамилии пациента и даты рождения. Я хотел бы найти способ проверить это в базе данных, прежде чем пытаться вставить ее и отобразить сообщение об ошибке. Вот что у меня сейчас есть:
$this->validate($request, [
'doctor' => 'required|integer',
'last_name' => 'required|string|max:255',
'first_name' => 'required|string|max:255',
'dob' => 'required|date_format:"m/d/Y"|max:255',
]);
$dobFix = date('Y-m-d', strtotime($request->dob));
$unique_id = $request->first_name . $request->last_name . $dobFix;
$patient = new Patient();
$patient->last_name = $request->last_name;
$patient->first_name = $request->first_name;
$patient->dob = $dobFix;
$patient->unique_id = $unique_id;
$patient->save();
$message = 'Patient ' . $request->first_name . ' ' . $request->last_name . ' was successfully added.';
return redirect()
->route('patients.index')
->with('success', $message);
Когда я пытаюсь отправить дубликат записи с этим, я получаю следующую страницу ошибки laravel:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
'DuaneBartelli1986-06-22' for key 'patients_unique_id_unique' (SQL:
insert into `patients` (`last_name`, `first_name`, `dob`, `unique_id`,
`updated_at`, `created_at`) values (Bartelli, Duane, 1986-06-22,
DuaneBartelli1986-06-22, 2018-11-13 13:16:37, 2018-11-13 13:16:37))
Итак, это говорит мне то, что мне нужно знать, но совсем не помогает пользователю. Как я могу изменить это сообщение об ошибке, например, сообщение об успешном завершении, или, возможно, сделать его валидным с остальной информацией запроса?