سلام
عذرخواهی میکنم اگر پرسشم مبتدی هست
میتونید بهم بگید برای روابط many to many سناریو update،فریمورک Yii چه کمکی میتونه به ما بکنه
چون باید خودمون آیتم هارو ابتدا حذف کنیم،دوباره foreach بزنیم روی آیتم ها و اونها در جدول واسط ثبت کنیم که خیلی خسته کننده اس
خود فریمورک راه حل مناسبی برای این کار ارائه نداده ؟
کمکم کنید لطفا
کسی نمیتونه راهنمایی کنه ؟
این موضوع هیچ ربطی به فریمورک نداره. توی قیدی که داخل دیتابیس برقرار میکنید، برای ON DELETE هم گزینهی CASCADE رو انتخاب کنید.
منظورم سناریو آپدیت است استاد.
که باید ایتم های جدید آیتم های حذف شده رو بدست بیاریم
و حذف و ثبت کنیم
مثلا چیزی مشابه دسته بندی پست ها که ممکنه هربار کم یا زیاد بشن. یک متدی خود فریمورک ددره به اسم link ولی نمیدونم برای چی هست.
وقتی کار رو به دیتابیس سپرده باشین لازم نیست خودتون کاری کنین. وقتی حذف بشه تمام رکوردهای وابسته هم حذف میشه. حتی اگه در فاصلهی بین انتخاب دکمهی حذف و انجام واقعی عملیات حذف چیزی اضافه شده باشه.
توی آپدیت هم میتونین ON UPDATE رو روی CASCADE تنظیم کنید. اینطوری اگه کلید اصلی تغییر کنه، تمام کلیدهای وابسته (خارجی) که به کلید قبلی اشاره میکردن هم آپدیت میشن.
پست 1 چنین دسته هایی داره
نرم افزار ( ایدی 1 )
سخت افزار ( ایدی 2 )
جدول
tbl_category_post
با فیلد های
id,post_id,category_id
با رکورد های :
1 1 1
2 1 2
حالا ویرایش میکنیم
به
برنامه نویسی
الگوریتم
نرم افزار.
خب اینجا دیگه باید رکورد 2 که سخت افزار هست حذف بشه از categoryها
و 2 دسته جدید برنامه نویسی و الگوریتم بهشون اضافه بشه.
توی این سناریو باید دسته هایی که قراره حذف بشه رو شناسایی کنیم( دسته سخت افزار )
دسته های جدید رو هم شناسایی کنیم.
حذف شده رو حذف و جدید هارو اضافه کنیم.
یعنی foreach بزنیم روی جدید ها و دونه دونه insert کنیم.
در چنین حالتی دیتابیس به ما کمک میکنه ؟ نمیدونم. من با php انجام میدم.
اما خب گفتم شاید فریمورک یک کمکی بکنه.
خیر رکورد 2 نباید حذف بشه. شما فقط ارتباط دستهی دوم با پست اول رو حذف کردین نه خود دستهی دوم رو. اون دسته وجود داره ولی دیگه با پست 1 ارتباط نداره. دستهها وابسته به مطالب نیستن.
بله.
منظورم همون هست،باید ارتباط دسته دوم با پست اول در جدول واسط حذف کنیم.
درکل میخواستم سناریو رو توضیح بدم. که این روال،توسط فریمورک یا سایر ابزار اماده قابل انجام هست یا خودمون باید کد کنیم.