Voici mon code pour récupérer les messages et les regrouper pour chaque discuterGroupBy après orderBy pour la requête complexe dans Laravel
$query = DB::table('chats');
$otherUserId= $request->input('loadId');
if($otherUserId==0){
$query->join('users as u1', 'u1.id', '=', 'chats.user1_id');
$query->join('users as u2', 'u2.id', '=', 'chats.user2_id');
$query->join('messages', 'messages.chat_id', '=', 'chats.id');
$query->where('chats.user1_id', '=', '{$userId}');
$query->orWhere('chats.user2_id', '=', '{$userId}');
$query->select('messages.chat_id', 'messages.from_id', 'u1.id as user1_id', 'u2.id as user2_id', 'messages.created_at', 'messages.body', 'messages.read', 'u1.name as user1_name', 'u2.name as user2_name', 'u1.picture_url as user1_pic', 'u2.picture_url as user2_pic');
$query->orderBy('messages.created_at ', 'DESC');
$query->groupBy('chat_id');
$messages = $query->paginate(4);
Quand je lance la requête le résultat est pas attendu OrderBy vient après le groupe par. J'ai beaucoup essayé mais je n'ai pas pu trouver de solution. J'ai également essayé cette solution mais je n'ai pas réussi à la faire fonctionner. Order By before Group By using Eloquent (Laravel)
S'il vous plaît aidez-moi J'ai perdu beaucoup de temps à essayer de le trier. Merci d'avance de m'avoir aidé.
Merci @Sam Dufel, je ne savais pas que ** Groupe par ** n'est pas légal après ** commande par **. Mais ce que je dois faire est d'obtenir 1 dernier message de chaque discussion (il y a beaucoup de messages liés à un chat), pourriez-vous suggérer une solution pour cela. Merci encore pour votre aide. – Logiclicker