سلام دوستان وقت بخیر
من اگه دوتا جدول پست و کامنت داشته باشم و رابطه یک به چند بین این دو موجود باشه وقتی از متد detach استفاده میکنم میتونم رابطه را توی pivot از بین ببرم و اگه از delete استفاده بکنم میتونم مثلا کامنت های پست را حذف کنم حالا میخاستم بدونم چه راهی هست برای اینکه هم کامنت حذف بشه و هم رابطش توی pivot از بین بره؟
با فرض اینکه میدونید فرق هر یک از این نوع روابط با هم چی هست و اینکه می دونید رابطه کامنت و پست منطقا بی معنیه اگر از نوع many-to-many باشه...:
کافیه قبل از delete رکوردتون یکبار روابطش رو detach کنید. اینجوری:
$post->comments()->deatch();
$post->delete();
ضمن اینکه دقت کنید که در migration مربوط به ایجاد جدول واسط حتما باید برای این دو ستون FK تعریف کنید با حالت
->onDelete('cascade')
سلام
رابطه یک به چند (مثل پست و کامنت که مثال زدید) که اصلا جدول pivot نداره. اون برای رابطه many-to-many هست.
با فرض اینکه میدونید فرق هر یک از این نوع روابط با هم چی هست و اینکه می دونید رابطه کامنت و پست منطقا بی معنیه اگر از نوع many-to-many باشه...:
کافیه قبل از delete رکوردتون یکبار روابطش رو detach کنید. اینجوری:
$post->comments()->deatch();
$post->delete();
ضمن اینکه دقت کنید که در migration مربوط به ایجاد جدول واسط حتما باید برای این دو ستون FK تعریف کنید با حالت
->onDelete('cascade')
@mhyeganeh بله دوست عزیز متوجهم که غیر منطقیه یدونه کامنت واسه ی چنتا پست باشه . صورته سوالما اشتباه بیان کردم..ممنون از پاسخگوییتون
فقط من اون قسمت ماگریشن توضیحتون را نفهمیدم.
$table->unsignedInteger('comment_id');
$table->foreign('comment_id')->references('id')->on('comments')
->onUpdate('cascade')
->onDelete('cascade');
کد بالا موقع تعریف migration باعث میشه هر وقت شما یک رکورد از جدول comments رو حذف کنید کلیه روابطش هم اتومات و در لایه دیتابیس حذف میشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟