سوال بپرسید
0

خطا در ویرایش مطالب لاراول (a foreign key constraint fails)

سوال بپرسید

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

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`laravel-blog`.`photos`, CONSTRAINT `photos_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: delete from `users` where `id` = 3)

مایگریشن Users:

Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->tinyInteger('status')->unsigned()->default(0);
            $table->integer('photo_id')->unsigned()->nullable();
            $table->rememberToken();
            $table->timestamps();
        });

مایگریشن Photo:

Schema::create('photos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('path');
//            $table->string('name');
            $table->string('alt')->nullable();
            $table->bigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
            $table->timestamps();

 

برچسب ها:
گزارش سوال
پرسیده شده در
آمار بازدید: 177

1 پاسخ

0

این خطا به شما می گوید: به دلیل ایجاد وابستگی بین جدول photos و users، امکان حذف آیتم وجود ندارد. یعنی شما یک ارتباط بین جدول تصاویر و کاربران ایجاد کرده اید ولی شرطی روی آن اعمال نکردید که اگر عکس حذف شد، وابستگی آن عکس با کاربر نیز از بین برود. بنابراین برای حل این مشکل باید جدول photos را به صورت زیر ویرایش کنید:

  $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

 

ممنون از پاسخ شما، ولی این تنظیمات مشابه آموزش و حتی خود فایل مایگریشن موجود در آموزش هست. تنها نتیجه ای که میتوان گرفت این نکته هست که دیتابیس طراحی شده اشتباه می باشد و نیاز به ذخیره آیدی کاربر روی عکس نیست چرا که اگر فرمایش شما اعمال شود تمام تصاویر آپلود شده توسط کاربر حذف می گردد. در ضمن پروژه وبلاگ روکسو را هم تست کردم و دیدم همین خطا برای آن هم رخ میدهد! – webdeveloper در