راکت
رایموند
رایموند
4 سال پیش توسط رایموند مطرح شد
حل
10 پاسخ

خطای SQLSTATE 23000 Integrity constraint violation

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

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))

ثبت پرسش جدید
mamat
mamat
@atrakunin4 سال پیشمطرح شد
0

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


mamat
mamat
@atrakunin4 سال پیشمطرح شد
0

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


رایموند
رایموند
تخصص :مختصص وردپرس - برنامه نویس لاراول
@Raymond4 سال پیشمطرح شد
1

@atrakunin
@mohammad.hekmaty

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


mamat
mamat
@atrakunin4 سال پیشمطرح شد
0

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


رایموند
رایموند
تخصص :مختصص وردپرس - برنامه نویس لاراول
@Raymond4 سال پیشمطرح شد
0

@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
@atrakunin4 سال پیشمطرح شد
0

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


mamat
mamat
@atrakunin4 سال پیشمطرح شد
0

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


رایموند
رایموند
تخصص :مختصص وردپرس - برنامه نویس لاراول
@Raymond4 سال پیشمطرح شد
0

@atrakunin

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

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

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

        return back();
 }

رایموند
رایموند
تخصص :مختصص وردپرس - برنامه نویس لاراول
@Raymond4 سال پیشمطرح شد
0

@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)) 

رایموند
رایموند
تخصص :مختصص وردپرس - برنامه نویس لاراول
@Raymond4 سال پیشمطرح شد
0

@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();
 });

mamat
mamat
@atrakunin4 سال پیشمطرح شد
0

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


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

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