راکت
حل شده

خطای SQLSTATE 23000 Integrity constraint violation

10 پاسخ

درود دوستان...
یه بخش دسته بندی کد نویسی کردم که همه چیز اوکیه و دسته ها ایجاد می کنه, بعد حذف و ویرایش میشه...
یه مدتی خوب کار می کنه و بعد از آن وقتی بخوام دسته ایجاد کنم خطای زیر میده:

Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'developer web 3' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (Orchid navs, developer web 3, 7, 2021-09-21 16:45:12, 2021-09-21 16:45:12))
ثبت پرسش جدید

پاسخ‌ها

10
mamat
mamat
@atrakunin
بهترین پاسخ

سلام مجدد
هر بار که ;()Category::create رو صدا میزنید یک ریکورد رو توی دیتابیستون ذخیره می کنید
الان توی کدی که فرستادین یکبار ریکویست ولیدیت شده رو ذخیره میکنید و یکبار هم مقادیر نام و اسلاگ و کتگوری آی دی ریکویست رو
بنابراین دو بار دارین اطلاعات رو وارد میکنید
فک کنم منظورتون این بوده که اول اطلاعات ولیدیت بشن و بعد فقط اطلاعات خاصی از ریکویست ولیدت شدتون وارد دیتابیس بشه
;()Category::create اولی اضافیه

mamat
mamat
@atrakunin

یکی از ستونای جدولتون که احتمال میدم اسلاگ باشه یونیک هستش و شما دارین مقدار تکراری واردش میکنین

رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@atrakunin
@mohammad.hekmaty
توضیح تصویر رو وارد کنید

یه نگاهی به عکس بنداز اصلا اسلاگ تکراری وارد نشده ...

شاید پاسخ شما همین‌جا باشد

mamat
mamat
@atrakunin

من اصرار دارم که ارور شما داره همینو میگه و یه اسلاگ ممکنه تکراری باشه
جهت اطمینان یه اسلاگ متفاوت وارد کنید و همچنین مستقیم دیتابیستونو چک کنید

رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@atrakunin

دسته ثبت می کنه و بخواد منتقل بشه صفحه اصلی خطای اسلاگ متفاوت وارد می کنم رو میده...

 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'BBBBBBB' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (تست 2, BBBBBBB, 7, 2021-09-21 17:43:17, 2021-09-21 17:43:17)) 

توضیح تصویر رو وارد کنید

mamat
mamat
@atrakunin

تو این که داری تکراری وارد میکنی شکی نداشته باش
ببین احتمال زیاد داری دوبار ریکورد کرییت میکنی حالا شاید تو این کنترلت یا کنترل های دیگت
من باشم تو این شرایط همه جاهایی که داده به دیتابیسم وارد میکنم رو چک میکنم که یه وقت یه کرییت دیگه نباشه

mamat
mamat
@atrakunin

کد کنترلر صفحه اصلی که بعد از وارد کردن اطلاعات بهش ریدایرکت میشی رو بفرست

رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@atrakunin

public function store(CategoryCreateRequest $request)
    {
        Category::create(
            $request->validated()
        );

        Category::create(
            $request->only(['name', 'slug', 'category_id'])
        );

        session()->flash('status', 'دسته بندی مد نظر به درستی ایجاد شد!');

        return back();
 }
رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@atrakunin

دیتابیس مربوط به جدول categoryies پاک کردم و دوباره دسته ایجاد کردم همون خطا رو میده:

Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Test 1' for key 'categories_slug_unique' (SQL: insert into `categories` (`name`, `slug`, `category_id`, `updated_at`, `created_at`) values (تست ۱, Test 1, ?, 2021-09-21 19:16:22, 2021-09-21 19:16:22)) 
رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

@atrakunin
اینم کد جدولشه:

Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('slug')->unique();

            $table->unsignedBigInteger('category_id')->nullable();

            $table->foreign('category_id')
                ->references('id')
                ->on('categories')
                ->onUpdate('CASCADE')
                ->onDelete('CASCADE');

            $table->timestamps();
 });

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام