راکت
حل شده

detach و delete

5 پاسخ

سلام دوستان وقت بخیر
من اگه دوتا جدول پست و کامنت داشته باشم و رابطه یک به چند بین این دو موجود باشه وقتی از متد detach استفاده میکنم میتونم رابطه را توی pivot از بین ببرم و اگه از delete استفاده بکنم میتونم مثلا کامنت های پست را حذف کنم حالا میخاستم بدونم چه راهی هست برای اینکه هم کامنت حذف بشه و هم رابطش توی pivot از بین بره؟

ثبت پرسش جدید

پاسخ‌ها

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

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

با فرض اینکه میدونید فرق هر یک از این نوع روابط با هم چی هست و اینکه می دونید رابطه کامنت و پست منطقا بی معنیه اگر از نوع many-to-many باشه...:
کافیه قبل از delete رکوردتون یکبار روابطش رو detach کنید. اینجوری:

$post->comments()->deatch();
$post->delete();

ضمن اینکه دقت کنید که در migration مربوط به ایجاد جدول واسط حتما باید برای این دو ستون FK تعریف کنید با حالت

->onDelete('cascade')
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

سلام
رابطه یک به چند (مثل پست و کامنت که مثال زدید) که اصلا جدول pivot نداره. اون برای رابطه many-to-many هست.

محمد میرزاخانی
محمد میرزاخانی
@mirzamohammad.com

@mhyeganeh
بله دوست عزیز منظورم چند به چند بود اشتباه نوشتم.حالا راهی هست؟

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

محمد میرزاخانی
محمد میرزاخانی
@mirzamohammad.com

@mhyeganeh بله دوست عزیز متوجهم که غیر منطقیه یدونه کامنت واسه ی چنتا پست باشه . صورته سوالما اشتباه بیان کردم..ممنون از پاسخگوییتون
فقط من اون قسمت ماگریشن توضیحتون را نفهمیدم.

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

تخصص: Full-Stack Web Developer Freelancer

$table->unsignedInteger('comment_id');
$table->foreign('comment_id')->references('id')->on('comments')
    ->onUpdate('cascade')
    ->onDelete('cascade');

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

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

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