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

مرتب سازی نتایج eloquent لاروال بر اساس یک جدول دیگه

سلام من یه برنامه چت خیلی ساده دارم شامل 3 تا جدول users , chatrooms و chats من میخوام چت روم هارو بر اساس جدیدترین پیام هاشون مرتب سازی کنم مثله هر نرم افزار پیام رسانی که اون چتهایی که دارای جدید ترین پیام هستن رو بالاتر از همه نشون میده
در حال حاضر از کوری زیر استفاده میکنم

ChatRoom::with('user')
            ->join('chats','chat_rooms.room_id','chats.room_id')
            ->select('chat_rooms.*','chats.created_at as c','chats.message')
            ->orderBy('c','DECS')
            ->paginate(5);

حالا مشکل اینجاس که این کوری تموم چت هارو بر میگردونه که چیزی نیست که من میخوام من سعی کردم چت روم هارو گروه بندی کنم اما اینکار هم جواب نداد.


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش آپدیت شد
1

راهکار ساده‌ای دارم، اون هم اینکه هر وقت پیام جدیدی فرستاده شد، ستونی روی تیبل chatrooms آپدیت بشه، مثل last_message_at یا چیزی مشابهش؛ اینطوری خیلی راحت با یک orderBy قابل مرتب‌سازیه.


mohamad
تخصص : برنامه نویس back-end
@kani.trifa 4 سال پیش مطرح شد
1

ممنون از وقتی که گزاشتی مشکل اینجا بود که امکان تغیر در جداول نبود

بعد از چند ساعت سرچ این تاپیک رو پیدا کردم و مشکل حل شد

laravel sort conversations by last-message


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

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