سلام چطور میشه وقتی یه رکورد رو از دیتابیس حذف میکینیم چیزهایی که با اون در رابطه هستند هم حذف بشند؟مثلا وقتی یه پست حذف میکنیم نظرات مربوط به اون پست هم حذف بشه.
برای onDelete چندتا مقدار میشه قرار داد:
cascade: همون طوری که دوستان اشاره کردند به این معنی هست که اگر پدرشون حذف بشه تمام بچه هاش هم حذف میشه. مثلا با حذف یک نویسنده تمام پست های وبلاگ و کامنت ها و ... مربوط به ایشون هم حذف میشه.
set null: بعد از حذف پدرشون در فیلد مربوط به FK مقدار NULL قرار میگیره. یعنی مثلا فیلد author_id در جدول posts برابر null میشه.
restrict: اگر هم این مقدار رو قرار بدید اجازه حذف پدر رو در صورتی که فرزند داشته باشه نمیده. یعنی مادامی که یک نویسنده دارای پست یا کامنت هست نمیتونید رکورد نویسنده رو حذف کنید و ارور میده.
@mahdiam200
سلام.
در migration باید یک کلید خارجی تعریف کنید و برای اون onDelete رو بذارید روی cascade.
شاید پاسخ شما همینجا باشد
@mahdiam200
سلام،
به طور مثال به این شکل:
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
که onDelete('cascade') کاری که شما مد نظر دارید رو انجام میده.
سلام به شما دوست عزیز.
ببینید شما به عنوان مثال یه مایگریشن واسه کاربر دارین و کاربر میخواد بیاد یه سری مقاله ثبت کنه و میخواین وقتی مقاله حذف شد همه چیز مربوط به مقاله هم حذف بشه.
باید به صورت زیر در جدول مقاله یه کاید خارجی تعریف کنید.
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');