Laravel 4.2 Group by and orderby ID DESC

1.1k Views Asked by At

I want to display my collection by last ID DESC from messagerie, but also that they be group by msSujet from messagerie_sujet

currently my query shows me the 1st ID and I want the last ID

    $currentUserId = Auth::user()->id;

    $threads = Messagerie::where('id_destinataire',$currentUserId)
        ->leftJoin('messagerie_sujets', 'messageries.sujet_id', '=', 'messagerie_sujets.id')
        ->select('messageries.id','messageries.id_expediteur','messageries.lu' ,'messagerie_sujets.id as msid','messagerie_sujets.sujet as msSujet',
            'messagerie_sujets.id as Mid','messagerie_sujets.created_at','messagerie_sujets.updated_at','messagerie_sujets.sujet','messageries.message')
        ->orderBy('messageries.id DESC')
        ->groupBy('msSujet')
        ->paginate(10);

Thanks

2

There are 2 best solutions below

2
On

your orderBy function call is a bit off the signuature for it is orderBy($columnName,$order)

$currentUserId = Auth::user()->id;

$threads = Messagerie::where('id_destinataire',$currentUserId)
    ->leftJoin('messagerie_sujets', 'messageries.sujet_id', '=', 'messagerie_sujets.id')
    ->select('messageries.id','messageries.id_expediteur','messageries.lu' ,'messagerie_sujets.id as msid','messagerie_sujets.sujet as msSujet',
        'messagerie_sujets.id as Mid','messagerie_sujets.created_at','messagerie_sujets.updated_at','messagerie_sujets.sujet','messageries.message')
    ->groupBy('messagerie_sujets.sujet')
    ->orderBy('messageries.id','DESC')
    ->paginate(10);
0
On

Just change the ->orderBy('messageries.id DESC') code to ->orderBy('messageries.id','DESC')