محمد میرزاخانی
3 سال پیش توسط محمد میرزاخانی مطرح شد
5 پاسخ

detach و delete

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


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

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

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

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

->onDelete('cascade')

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
2

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


محمد میرزاخانی
@mirzamohammad.com 3 سال پیش مطرح شد
0

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


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

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

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

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

->onDelete('cascade')

محمد میرزاخانی
@mirzamohammad.com 3 سال پیش مطرح شد
0

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


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0
$table->unsignedInteger('comment_id');
$table->foreign('comment_id')->references('id')->on('comments')
    ->onUpdate('cascade')
    ->onDelete('cascade');

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


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

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