مرتضی صبیحی
5 سال پیش توسط مرتضی صبیحی مطرح شد
4 پاسخ

ابهام در طراحی فیلد جدول

سلام
من واسه پست هام میخوام keyword قرار بدم ولی میخوام وقتی post حذف شد، اون keyword های مربوط به اون حذف نشن.
یعنی موقعی که میخوام پست رو منتشر کنم، میتونم همونجا اگر keyword وجود نداشت، اونو ایجاد کنم و اگر ن که انتخابش کنم.
ولی وقتی پست ها حذف شدن دگ اون keyword ها حذف نشن.

اگه هم از این استفاده نکنم که به ارور میخورم:

            $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');

ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

میتونید از set null استفاده کنید

$table->...->onDelete('set null');

فقط اگر میخواهید از این روش استفاده کنید٬ حتما باید foreign key از نوع nullable باشه.

$table->integer('foreign_id')->unsigned()->nullable();

مرتضی صبیحی
تخصص : Front-end developer
@mortezasabihi 5 سال پیش مطرح شد
0

@ali.bayat
اگ از این روش استفاده کنم، زمانی ک مقاله حذف شد، میتونم از اون کلمات کلیدی ک قبلا برای مقاله ای ک حذف شده بود برای مقاله جدید استفاده کنم؟
اگر میشه چطوری؟
مرسی


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
0

سلام
@mortezasb87
برای سوال دومتون
آیدی kyword هایی که پست هاشون حذف شده رو بگیرید تو یه لیست و داشته باشید
و با crud کردن به پست دیگه بزنید ، حذفشون کنید و آپدیت کنید....!


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

@mortezasb87
بله امکانش هست.
ببینید این روش ( onDelete('cascade') ) برای مواقعی خوبه که مثلا:

شما کاربری دارید که در بلاگ شما مطالبی رو پست میکنه.
حال اون کاربر یا Delete Account میکنه یا شما بعنوان Admin اون کاربر رو حذف میکنید.
در این حالت دیگه دلیلی نداره شما پست های این کاربر رو نگه دارید.. پس تمام پست‌هایی که (foreign key user_id) اون کاربر رو دارند حذف میشند.


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

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