مهدی
4 سال پیش توسط مهدی مطرح شد
2 پاسخ

برگرداندن گروه های چت که افراد انتخابی رو حتما داراست

سلام دوستان
من یک لیستی از کاربران رو در جدول users دارم که مثلا شامل 1000 نفر شخص میباشد و هر شخص هم یک فیلد داره بنام تخصص

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

$exist_group = ChatMessageGroup::whereHas('members' , function($q) use($selected_users){
$q->whereIn('user_id',$selected_users);

})
->withCount('members')
->having('members_count', '=', count($selected_users))
->first();

این کد درست کار نمیکنه ، چون من اومدم گفتم که گروه هایی رو پیدا کن که افراد انتخاب شده فعلی توشون باشه و تا اینجا درسته و میاد پائین تر هم که گفتم تعداد عضوهای گروه هایی که پیدا کردی هم با تعداد افراد انتخابی یکی باشه و اینکارو برای این انجام داده بودم که مثلا وقتی افراد انتخابی در گروهی بودن و علاوه بر خودشون اشخاص دیگه ای هم سیستم تشخیص بده و با تعداد محدود کنه ولی مشکلش اینه که WhereIn الزام نمیکنه که همون افراد انتخابی فقط باشن و صرفا میاد بررسی میکنه که حداقل یکیشون باشه ولی من میخوام بگم دقیقا همین افراد اگر بودن گروه هاشونو برگردون اگر نبودن هم که گروهی بر نمیگرده

نمونه اش رو اینستاگرام هم کار کرده و شما وقتی میخواین گروهی رو ایجاد کنید بررسی میکنه ببینه قبلا اون ترکیب آدما تشکیل گروه دادن یا نه و اگه داده بودن هدایت میکنه به صفحه گفتگوی قبلی و اگه اون ترکیب آدما گروهی نداشتن یک گروه جدیدی میسازه براشون


ثبت پرسش جدید
Mohammad reza Golshahi
تخصص : Go - Python
@golshahimohammadreza 4 سال پیش مطرح شد
2

سلام

ی روش خیلی راحت تر بهت پیشنهاد میکنم تو احتمالا ی جدولی داری که مشخص میکنی ی فرد تو چه گروههایی هستش (user_id , group_id) داخلش هست (اسمشو میزارم xyz)

شما ی آراایه از id کاربران داری به طول مثلا 200 خوب تو جدول xyz میام ی query میزنم میگم این کاربرایی که من سلکت کردم برام بیار ببینم تو چه گروه هایی هستم . حالا بعدش میام collection که بهم داده رو groupBy میکنم بر اساس group_id خوب خروجیش مشخشه کلیدش id groyp و و محتواش colection کابرایی که تو اون گروه ها هستن (ضمن اینکه فقط اونایی هستن که تو گفتی user_id اون آرایه انتخابی باشه) (میتونی حتی تعدادشم بیاری به جای مقادیرش) .
خوب برای اینکه گروه تشکیل نشه کافیه تعداد تعداد افراد توی هر گروه با تعداد آرایت برابر باشه مثلا گروه 12 تو کاکشنش 200 نفر هستن این نشون میده همه این افراد تو ی گروه هستن (ممکنه افراد بیشتریم تو اون گروه باشد برای اینکارم جدولی که میسازی برای گروه مشخص کن چند نفر داخلش هستن).

امیدوارم کمکت کرده باشم


Mohammad reza Golshahi
تخصص : Go - Python
@golshahimohammadreza 4 سال پیش مطرح شد
0

@mehdi539
یادم رفت اشاره کنم


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

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