Laravel 4

Group By et Order by ID DESC

  • Avatar de MSBIZ
    Membre depuis :
    10/03/2016
    Messages :
    1

    Bonjour,

    J'ai crée un système de messagerie. Un membre peut envoyer un message privé à un autre membre.

    Pour cela j'ai crée 2 tables

    La table 'messagerie_sujets' qui contient les champs suivant :

    • id
    • sujet
    • created_at
    • updated_at
    • user_id

    Et une 2ème table 'messageries' qui contient les champs suivant :

    • id
    • id_expediteur
    • id_destinataire
    • sujet_id
    • message
    • validated
    • lu
    • created_at
    • updated_at

    Mon soucis vient de la réquête eloquent suivant :

    $currentUserId = Auth::user()->id;
    $threads=Messagerie::join('messagerie_sujets', 'messageries.sujet_id', '=', 'messagerie_sujets.id')
    ->where('messageries.id_destinataire',$currentUserId)
    ->where('messagerie_sujets.delete_by','NOT LIKE','%'.$currentUserId.'%')
    ->where('validated',1)
    ->groupBy('messageries.sujet_id')
    ->orderby('messageries.id','DESC')
    ->simplePaginate(10);

    Ma requête actuel me groupe les messages par sujet et m'affiche le 1er message reçu dans une conversation.

    Moi ce que je souhaiterais c'est que ma requête m'affiche le dernier message reçu dans une conversation qui elle doit être groupé par le sujet.

    Pour être plus clair quand un membre va sur la page de ça boîte de récéption, je souhaiterai que ça lui affiche le le dernier message reçu d'un membres mais que cela soit groupé par le sujet

    Example

    Titre du sujet : Mon vélo
    1er message : Regarde mon beau vélo
    2ème message : J'ai oublié de joindre les photos.

    Quand le 2eme membre va dans ça boîte de récéption il devrai voir le titre du sujet "Mon vélo" et le message "J'ai oublié de joindre les photos."

    Alors que moi ma requête actuelle m'affiche titre du sujet "Mon vélo" et le 1ER MESSAGE "Regarde mon beau vélo".

    Merci d'avance

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    Bonsoir,

    Le groupBy sélectionne une ligne de chaque groupe et sert principalement aux fonctions d'agrégation. Donc appliquer un orderBy à la suite ne doit pas fonctionner...

Vous ne pouvez pas répondre à ce sujet.