خطا در ویرایش مطالب لاراول (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();

 

برچسب ها:
پرسیده شده در: 6 سال قبل
آمار بازدید: 2085
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو
0

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

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

 

ارسال شده در: 6 سال قبل
masoudsalehi (1725)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما نظرات دریافتی:‌ بیش از 50 نظرات دریافتی:‌ بیش از 50 دارای 25 پاسخ صحیح دارای 25 پاسخ صحیح ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای
ممنون از پاسخ شما، ولی این تنظیمات مشابه آموزش و حتی خود فایل مایگریشن موجود در آموزش هست. تنها نتیجه ای که میتوان گرفت این نکته هست که دیتابیس طراحی شده اشتباه می باشد و نیاز به ذخیره آیدی کاربر روی عکس نیست چرا که اگر فرمایش شما اعمال شود تمام تصاویر آپلود شده توسط کاربر حذف می گردد. در ضمن پروژه وبلاگ روکسو را هم تست کردم و دیدم همین خطا برای آن هم رخ میدهد! - webdeveloper در 6 سال قبل
جهت ارسال پاسخ ابتدا عضو سایت شوید.