سلام خسته نباشید من میخوام وضعیت دسترسی کاربران رو مدیریت کنم
با قسمت اضافه کردن دسترسی ها مشکلی ندارم
اما وقتی میخوام خذف کنم دسترسی رو این ارور رو بهم میده اما
وقتی صفحه مرورگر رو refresh میکنم اون دسترسی رو از کاربر حذف کرده در حقیقت کد کار میکنه اما نمیدونم چرا این ارور رو میده
علت ارورتون هم اینه که مثلا یک کاربری براش نقش مدیر و نویسنده تعریف شده. حالا شما میاید و نقش مدیر رو ازش حذف میکنید و روی ذخیره کلیک میکنید.
اگر به اشتباه از attach استفاده کرده باشید فارغ از همه نقش های قبلیش میاد و سعی میکنه یک نقش باقیمونده (یعنی نویسنده) رو اضافه کنه. غافل از اینکه قبلا چنین نقشی برای این کاربر به ثبت رسیده. به همین خاطر ارورDuplicate entry
میده و معنیش دقیقا همینه که یک کاربر نباید دوبار یک نقش یکسان براش به ثبت برسه.
این مشکل به خاطر اینه که شما توی جدولی که دسترسی رو ذخیره میکنید یه ستون دارید که خصوصیت PRIMARY داره و مقادیری هم که برای حالت PRIMARY میخواید ذخیره کنید نباید تکراری باشه. احتمالا از قبل یه سری مقادیر تکراری توی جدول permission_user دارید که داره به اونها ایراد تکراری بودن میگیره. شما یه بار جدول مذکور رو Empty کنید و تست کنید.
سلام
یک دور کل اطلاعات این جدول رو پاک کنید ، احتمالا درست میشه .
اگه نشد بهتره کدتون رو هم ببینیم
حدس میزنم موقع ذخیره تغییرات نقشها یا مجوزها بجای استفاده از sync دارید از attach یا create استفاده میکنید!
اگر نوع روابطتون رو از نوع many-to-many تعیین کردید (که منطقا همینطور باید باشه) موقع ذخیره تغییرات نقش ها یا مجوزها، از متد sync بجای attach/create استفاده کنید تا با نقش ها و مجوزهای قبلی تداخل پیدا نکنه...
اره از attach استفاده کردم
به جای sync
به جای detach معادلش از چه متدی استفاده کنم ؟؟؟؟
@mhyeganeh
کلا متد sync حلال همه موضوعاته و همه فن حریفه!
بصورت اتومات اون هایی حذف شدند رو detach میکنه. اون هایی که جدید هستند رو attach میکنه. به اون هایی که تغییری نداشتند هم دست نمیزنه. دیگه چی میخواید؟ 😉
https://laravel.com/docs/8.x/eloquent-relationships#syncing-associations
علت ارورتون هم اینه که مثلا یک کاربری براش نقش مدیر و نویسنده تعریف شده. حالا شما میاید و نقش مدیر رو ازش حذف میکنید و روی ذخیره کلیک میکنید.
اگر به اشتباه از attach استفاده کرده باشید فارغ از همه نقش های قبلیش میاد و سعی میکنه یک نقش باقیمونده (یعنی نویسنده) رو اضافه کنه. غافل از اینکه قبلا چنین نقشی برای این کاربر به ثبت رسیده. به همین خاطر ارورDuplicate entry
میده و معنیش دقیقا همینه که یک کاربر نباید دوبار یک نقش یکسان براش به ثبت برسه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟