foreign('category_id')->references('id')->on('categories')->onDelete('cascad ...' /> foreign('category_id')->references('id')->on('categories')->onDelete('cascad ...' />
🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۸ امیر محمد وثوقی
شکست در انجام فارین
جامعه پی اچ پی ایجاد شده در ۱۷ تیر ۱۴۰۲

من این کد رو برای فارین زدم ولی به ارور خوردم

$table->bigInteger('category_id');
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->unsignedBigInteger('owner_id');
$table->foreign('owner_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();

خطای مربوطه

  SQLSTATE[HY000]: General error: 3780 Referencing column 'category_id' and referenced column 'id' in foreign key constraint 'products_category_id_foreign' are incompatible. (Connection: mysql, SQL: alter table `products` add constraint `products_category_id_foreign` foreign key (`category_id`) references `categories` (`id`) on delete cascade)

سلام امیر جان، وقتی میخواین foreign بزنید، باید نوع فیلد id رفرنس و foreign key یکی باشه. مثلا در کدتون اومدین category_id رو bigInteger گذاشتین ولی احتمال میدم که فیلد id در جدول categories از نوع unsignedBigInteger باشه. پس باید اصلاح کنین نوع فیلد category_id رو دقیقا همون چیزی که برای id در جدول categories هست، بزارید.

صادق برزگر ۱۷ تیر ۱۴۰۲، ۰۷:۱۸


جدول userscd3a-Screenshot (44).png

جدول categories

33b1-Screenshot (45).png

امیر محمد وثوقی ۱۷ تیر ۱۴۰۲، ۰۷:۲۸

کاملا مطابقت دارند

 $table->bigInteger('category_id');
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->bigInteger('owner_id');
$table->foreign('owner_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
امیر محمد وثوقی ۱۷ تیر ۱۴۰۲، ۰۷:۲۹

برای فارین owner_id مطابقت نداشت درست کردم ولی باز هم ارور

 SQLSTATE[HY000]: General error: 3780 Referencing column 'category_id' and referenced column 'id' in foreign key constraint 'products_category_id_foreign' are incompatible. (Connection: mysql, SQL: alter table `products` add constraint `products_category_id_foreign` foreign key (`category_id`) references `categories` (`id`) on delete cascade)
امیر محمد وثوقی ۱۷ تیر ۱۴۰۲، ۰۷:۳۲

لطفاً سورس همه فایل‌های migration تون رو بفرستید یا پروژتون رو کلا روی گیت هاب قرار بدید و لینکش رو بفرستید تا بررسی کنم.

صادق برزگر ۱۷ تیر ۱۴۰۲، ۱۲:۳۴

https://github.com/EhsanMasoumipor/nilsaShop.git

امیر محمد وثوقی ۱۷ تیر ۱۴۰۲، ۱۲:۴۰

همونطور که بالاتر هم بهتون گفته بودم باید نوع کلید خارجی تون با آیدی رفرنستون یکی باشه.

توی مایگریشن هاتون از متد id دیفالت لاراول استفاده کردین که اون خودش در واقع unsignedBigInteger هست.

پس باید کلید‌های خارجیتون رو از نوع unsignedBigInteger بزارید.

بهترین پاسخ
صادق برزگر ۱۷ تیر ۱۴۰۲، ۱۳:۱۹

مچکرم جناب برزگر همونطور که گفتید مشکل از نوع کلید خارجی بود

امیر محمد وثوقی ۱۷ تیر ۱۴۰۲، ۱۳:۲۴