Bonjour,

J'ai une question à laquelle je ne trouve pas réponse depuis des jours et j'aimerai soliciter votre aide pour m'aider à trouver la solution ! :)

Enfaite j'aimerai dans une de mes vues trier les données que j'obtiens dans un tableau par une certaine colonne de la base de données.

Pour le moment j'obtiens quelque chose comme ça : (Tous les évènements)

  • Evenement 1
  • Evenement 2
  • Evenement 3
  • Evenement 4
         $interests = DB::table('events')
                        ->orderBy('event_type', 'ASC')
                        ->get();

Qui chacuns possèdent un type d'évènement et j'aimerai justement les regrouper par type d'évènements dans ma vue ! :p

Exemple :

Type d'évènement 1

  • Evenement 1
  • Evenement 2

Type d'évènement 2

  • Evenement 1
  • Evenement 2

Je ne sais pas si vous comprenez bien la problématique, mais je ne sais pas comment trier dans ma vue par type d'évènements.

Merci de votre aide ! :)

4 réponses


Bonjour,

Tu veux retrier une fois la requête faite c'est ça?

Salut,

As-tu essayé :

 $interests = DB::table('events')
                        ->orderBy('event_type', 'ASC')
                        ->orderBy('event', 'ASC')
                        ->get();

Enfaite j'aimerai pouvoir trier dans ma vue par type d'évènement, hors quand je fais un groupBy, je n'obtiens qu'un seul évènement d'un seul type, mais moi j'aimerai plusieurs évènements dans un seul type et trier :p
Le orderBy ne fait que trier tous les éléments, alors que moi je souhaiterai trier par event_type je ne sais pas si je suis clair

C'est difficile à expliquer ...
Comment est-ce que dans la vue j'affiche les évènements du type 1 ensemble, puis ceux du type 2, ... qu'ils soient vraiment bien différencié enfaite

C'est l'affichage dans la vue qui me pose problème enfaite, le fait de vouloir trier en fonction de l'event_type

Vraiment afficher d'abord tout les évènements de type 1, puis ceux de type 2, puis ceux de type 3, les "regrouper" en quelque sorte ensemble en fonction de leur event_type

Merci en tout cas de votre aide précieuse ! :)

Ah donc si j'ai bien compris ce que tu vuex, je pense que ce que tu dois faire c'est ce qu'on appelle un algorithme de rupture.
Donc tu prends tous tes êvenements de cette manière :

$interests = DB::table('events')
                        ->orderBy('event_type', 'ASC')
                        ->get();

Ensuite (je te donne le code php, pas le blade).

//Donc la une boucle pour tout parcourir
for($i = 0; $i < count($interests); $i++){
    //Si on est sur le premier élément, ou que le type de l'événement d'avant est différent, on affiche le type d'événement
    if(($i == 0) || ($interests[$i]->event_type != $interests[$i-1]->event_type)){
    //Donc ici tu affiches ton event_type
    }
    //et ici tu affiches ton événement
}

Si j'ai bien compris ce que tu veux ;)