Obtenir le dernier enregistrement de chaque groupe
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
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();
Vous ne pouvez pas répondre à ce sujet.