راکت
حل شده

روابط در لاراول

7 پاسخ

سلام چطور میشه وقتی یه رکورد رو از دیتابیس حذف میکینیم چیزهایی که با اون در رابطه هستند هم حذف بشند؟مثلا وقتی یه پست حذف میکنیم نظرات مربوط به اون پست هم حذف بشه.

ثبت پرسش جدید

پاسخ‌ها

7
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

برای onDelete چندتا مقدار میشه قرار داد:

cascade: همون طوری که دوستان اشاره کردند به این معنی هست که اگر پدرشون حذف بشه تمام بچه هاش هم حذف میشه. مثلا با حذف یک نویسنده تمام پست های وبلاگ و کامنت ها و ... مربوط به ایشون هم حذف میشه.

set null: بعد از حذف پدرشون در فیلد مربوط به FK مقدار NULL قرار میگیره. یعنی مثلا فیلد author_id در جدول posts برابر null میشه.

restrict: اگر هم این مقدار رو قرار بدید اجازه حذف پدر رو در صورتی که فرزند داشته باشه نمیده. یعنی مادامی که یک نویسنده دارای پست یا کامنت هست نمی‌تونید رکورد نویسنده رو حذف کنید و ارور میده.

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@mahdiam200
سلام.
در migration باید یک کلید خارجی تعریف کنید و برای اون onDelete رو بذارید روی cascade.

مهدی
مهدی
@mahdiam200

تخصص: برنامه نویس

میشه بیشتر توضیح بدید؟

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

محمد مهدی
محمد مهدی
@MohammadMahdi

@mahdiam200
سلام،
به طور مثال به این شکل:

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

که onDelete('cascade') کاری که شما مد نظر دارید رو انجام میده.

Armin Rahmati
Armin Rahmati
@arminrahmati999

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

$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
مهدی
مهدی
@mahdiam200

تخصص: برنامه نویس

در مورد روابط ساده مشکل حل شد اما اگه رابطه پلی مورفیک باشه؟اونموقع دیگه نمیتونیم فیلد able_id رو انتخاب کنیم چون به عنوان مثال امکان داره عکس مربوط به مقاله ۶ و محصول ۶ وجود داشته باشه و با این کار اگر هر کدومش حذف شد عکس اون یکی هم حذف میشه راهکارتون چیه؟

رافق مجتهدزاده
رافق مجتهدزاده
@rafig

تخصص: برنامه نویسی php

لطفا در مورد حذف در روابط مورفیک هم راهنمایی کنید.
در روابط مورفیک یک به یک چطوری باید حذف کنیم . با توجه به اینکه فیلد able دار رو اتوماتیک تعریف می کنیم. کلید خارجی هم که نیست براش ondelete تعریف کنیم

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

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