Я использую inertia как дополнение для vue.
Загружаю картинку на сервер и добавляю в базу данных title и path.
И хочу провалидировать, чтобы path -> unique.
public function store(Request $request)
{
$files = [];
foreach ($request->file('files') as $key => $file) {
$upload_path = public_path('uploads/');
$file_name = $file->getClientOriginalName();
$files[$key]['title'] = $file_name;
$files[$key]['path'] = "uploads/" . $file_name;
}
$validator = Validator::make($files, [
'*.title' => 'required|string',
'*.path' => 'required|string|unique:media',
]);
$errors = $validator->errors();
if (count($errors)) {
return inertia('Admin/Media/Create', compact('errors', 'files'));
} else {
foreach ($request->file('files') as $key => $file) {
$upload_path = public_path('uploads/');
$file_name = $file->getClientOriginalName();
$file->move($upload_path, $file_name);
Media::create([
"title" => $file_name,
"path" => "/uploads/" . $file_name
]);
}
return inertia('Admin/Media/Create', compact('errors', 'files'));
}
}
В базе данных уже имеются несколько картинок, и когда пытаюсь добавить еще раз, выскакивает ошибка, при этом валидатор не срабатывает.
Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '/uploads/palma-1.jpg' for key 'media.media_path_unique' (SQL: insert into `media` (`title`, `path`, `updated_at`, `created_at`) values (palma-1.jpg, /uploads/palma-1.jpg, 2022-04-25 07:57:57, 2022-04-25 07:57:57))
https://localhost:3000/admin/media
Заранее благодарен.