serii81
@serii81
Я люблю phр...

Почему не срабатывает валидатор в laravel?

Я использую 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


Заранее благодарен.
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@vism
$files[$key]['path'] = "uploads/" . $file_name;

"path" => "/uploads/" . $file_name

игра, "найди отличия"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы