Bonjour à tous,

J'ai un petit soucis niveau algorythmique.
En fait, je cherche a afficher des images dans un ordre précis, c'est à dire que leur date (avec le nom de l'image) est enregistrée en BDD :

Exemple:
ID | Nom | Jour | Mois | Annee
1 | img1 | 15 | 02 | 2015
2 | img2 | 30 | 08 | 2001
3 | img3 | 02 | 06 | 2010
4 | img4 | 11 | 10 | 2014

Avec une requête du style :

$requete = "SELECT * FROM mesphotos ORDER BY id DESC";

On aurais un résultat du style : img4, img3, img2, img1 et si au lieu de desc on met asc, j'aurais l'ordre inverse. Mais ce n'est pas ce que je veux.

Je voudrais plutôt que cela s'affiche comme cela (nous sommes le 25 février 2015) : img1, img4, img3 et img2.

J'ai pensé pour cela enregistrée le timestamps formée avec la date dans un array() puis afficher du plus grand au plus petit timestamps mais je ne sais pas si c'est vraiment la meilleur solution...

Cordialement
Timothé Mauzet

PS1: Je ne sais pas si mon message est claire, dites le moi ;)
PS2: Je bosse sur laravel pour informations.

1 réponse


Sous Laravel tu as par défaut un champ created_at et pour sélectionner les éléments par date décroissante justement, il te suffit de faire un latest() dans ta requête :

Picture::latest()->get();

Sinon tu peux les classer selon tes envies avec orderBy (orderBy('field', 'desc')) ou en précisant le champ dans latest('') ;) :

Picture::latest('Annee')->latest('Mois')->latest('Jour')->get();

En supposant que j'ai bien suivi ton raisonnement ^^