Ordonner requête modèles associés

Par kinkaz, il y a 11 ans


Bonjour,

Mon application se présente de la manière suivante :

(Pour le moment, dans mon modèle Course :

public $hasMany = array('Date' => array(
            'order' => 'Date.date ASC'
        )
);

)

Mon problème est que j'aimerais ordonner mes évènements selon leurs dates respectives :

Cours 1 : jour 1 -> 2015-02-27
Cours 2 : jour 1 -> 2015-03-03
Cours 3 : jour 1 -> 2015-03-10
[etc.]

Pour l'instant, cela ordonne les dates au sein d'un même enregistrement au lieu de le faire au niveau global. J'ai cherché sur la doc cakephp mais le type d'ordre que je désire effectuer (ordonner les enregistrements du modèle "course" selon les enregistrements du modèle associé "dates") n'a pas l'air très commun. Je suis donc coincé :( Je pourrais recourir à une requête forcée mais j'aimerais d'abord savoir s'il est possible de trier mes entrées plus proprement.

Quelqu'un a-t-il une idée ?

Merci d'avance

4 réponses

FredXD, il y a 11 ans

Coucou,
dans ton find('all'....), tu rajoute dans ton tableau d'option un 'order' => 'Date.date ASC'
Normalement ca devrait passer vu qu'il fera le trie dans la requete avec jointure et non que sur le model qui est lié

Enfin je pense... j'ai jamais eu ce cas de figure à traiter

kinkaz, il y a 11 ans

Merci filopp !

Dans l'intervalle j'avais tout ré-ordonné avec plein de foreach... Je ne connaissais pas cette classe. Ma solution marche pour le moment, mais je vais refaire tout ça plus proprement avec la classe Hash. Vraiment top, merci pour l'astuce !

kinkaz, il y a 11 ans

Hello,

Merci pour ta réponse. En fait il ne m'est pas possible d'ordonner depuis le find qui est effectué depuis le modèle 'Course' (je ne peux ordonner que selon des éléments du modèle 'Course' sauf erreur). Si je mets l'order à l'intérieur du modèle (dans l'association), ça ne trie pas correctement non plus.

Je crois qu'à mon regret, je vais me contenter d'une requête dite "forcée".

filopp, il y a 11 ans

Salut,
Tu peux faire ta requête telle qu'elle est et ensuite la ré-ordonner en utilisant la classe Hash. Jette un oeil sur celle-ci dans la doc cake : ici Une classe que j'utilise très souvent pour ce genre de traitement et qui évite un tas de foreach...