ddimonn8080
@ddimonn8080

Как проверить существует ли unique значение в базе перед тем как создать новый продукт в Laravel?

Здравствуйте.
Есть
ProductssController.php

в котором
public function addProduct(){
        $objCategories = new Categories();
        $categories = $objCategories->get();
        return view('admin.products.products.add', ['categories' => $categories]);
    }

    public function addRequestProduct(Request $request){
        try{
            $this->validate($request, [
                'title' => 'required|string|min:4|max:25',
                'slug' => 'required|string|min:4|max:25',
                'excerpt' => 'required|string|min:4|max:25',
                'content' => 'required|string|min:4|max:300',
                'descrtitle' => 'required|string|min:4|max:25',
                'descrtext' => 'required|string|min:4|max:25',
                'descr' => 'required|string|min:4|max:300',
                'regular_price' => 'required|regex:/\d+/',
                'discount' => 'required|regex:/^\d+(\.\d{1,1})?$/',
                'currency' => 'required|string|min:4|max:25',
                'image' => 'mimes:jpeg,jpg,png,gif|max:10000',
                'tab_bg' => 'mimes:jpeg,jpg,png,gif|max:10000',
            ]);

            $is_reccomended = $request->has('is_reccomended') ? true : false;

            $image = ImageDNK::save($request, 'image');
            $tab_bg = ImageDNK::save($request, 'tab_bg');

            $objProduct = new Products();
            $objProduct = $objProduct->create($request->all(), [
                'is_reccomended' => $is_reccomended,
                'image' => $image,
                'tab_bg' => $tab_bg,
            ]);

            $objCatsRels = new CategoriesRelationship();
            $objCatsRels = $objCatsRels->create([
                'object_id' => $objProduct->id,
                'category_id' => $request->product_category,
            ]);

            if($objProduct && $objCatsRels){
                return redirect(route('admin.products.edit', ['id' => $objProduct->id]))->with('success', 'Товар успешно добавлен');
            }

            return back()->with('error', 'Товар не добавлен. Попробуйте ещё раз.');
        }catch(ValidationException $exception){
            \Log::error($exception->getMessage());
            return back()->with('error', $exception->getMessage());*/
        }
    }

В базе данных поле slug уникальное
При наличии в базе товара с slug=="slug" получаю ошибку
"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'slug' for key 'products_slug_unique' (SQL: insert into `products` (`title`, `slug`, `exce


Подскажите как мне убрать эту ошибку и почему не сработало?
return back()->with('error', 'Товар не добавлен. Попробуйте ещё раз.');

Спасибо.
  • Вопрос задан
  • 392 просмотра
Пригласить эксперта
Ответы на вопрос 2
manzadey
@manzadey
PHP, Laravel, SQL
Добавь в проверку роля slug дополнительную проверку на уникальность: unique:table
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы