Besoin d'aide ?

Obtenir le dernier enregistrement de chaque groupe

Avatar de invincibleinvincible
invincibleinvincible

Bonjour team Laravel,

J'ai une table avec plusieurs champs tel quel :

id firstname lastname Created_at
1 a1 b 2021-10-10
2 a2 c 2021-10-11
3 a2 d 2021-10-12
4 a1 e 2021-10-13
5 a3 f 2021-10-14
6 a4 g 2021-10-15
7 a3 h 2021-10-17

Je souhaite pouvoir récupérer le dernier enregistrement de chaque groupe formé par la colonne firstname, c'est à dire : Avoir :

id firstname lastname Created_at
4 a1 e 2021-10-13
3 a2 d 2021-10-12
7 a3 h 2021-10-17
6 a4 g 2021-10-15

Pour cela, j'ai fait : $recups = DB::table('matables') ->selectRaw('MAX(created_at) AS max_date, firstname, lastname') ->groupBy('firstname')->get()

Helas, cela me permet de récupérer seulement la dernière date created_at de chaque groupe formé par la colonne firstname. Je souhaite récupérer tout le dernier enregistrement de chaque groupe, pas seulement le champ max_date !!

Quelqu'un peut m'aider ?

merci d'avance

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Donc ta requete est bonne mais tu n'as pas tous les champs c'est ça ? Dans ce cas, rajoute un * :

DB::table('matables')
    ->selectRaw('*,MAX(created_at) AS max_date')
    ->groupBy('firstname')
    ->get();

Ou peut-être:

DB::table('matables')
    ->select('*')
    ->orderBy('created_at', 'DESC')
    ->groupBy('firstname')
    ->get();
Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.