Bonjour
J'ai une table de Photo contenant une colonne Photo.category_id et une colonne Photo.num permettant le classement des photos.

Je souhaite récupérer la PREMIERE photo de chaque catégorie avec un classement des photos par Photo.num.

En faisant

'group'=>'Photo.category_id'

j'ai bien une photo de chaque categorie mais celle ci sont classées par Photo.id et non pas par Photo.num.

en ajoutant

'order'=>'photo.num'

cela génère une erreur due je pense au groupby

5 réponses


Bonjour,
Tu peux nous mettre le paginate ou le find complet où il y a

'order'=>'photo.num'
sakini
Auteur

Voila
en fait il n'y a pas d'erreur quand je met 'order'=>'Photo.num' , mais j'obtiens les photos classé pat num sans avoir forcement une de chaque catégorie :

$roomThumb= $this->Room->Photo->find('all',
                    array(
                            'conditions'=>array(
                                    'pub'=>true,
                                    'Section.id'=>2,
                                    'Photo.category_id'=>array(2,3,4,6),
                            ),
                            'order'=>'Photo.num',
                            'recursive' => 0,
                            'group'=>'category_id',
                            'fields' => array('Photo.name','Photo.ext','Photo.slug'),
                    )
            );

Bonjour, il faut mettre le p de "photo" en majuscule, et vous n'avez pas précisez si vous voulez les photos dans l'ordre descendant ou ascendant.
Pour cela il faut faire

'order'=>'Photo.num DESC'

ou si vous les voulez dans l'ordre ascendant, il faut remplacer DESC par ASC
Et pour mettre qu'une seul photo, il faut faire

'limit'=>1

En espérant vous avoir aidé.

sakini
Auteur

J'ai bien mis P majuscule à Photo ansi que

'order'=>'Photo.num ASC'

en mettant

'limit'=>1

Il n'y a qu'UNE seule photo retourné en tout et non pas une de chaque catégorie.

Et en faisant dans le sens inverse ?

$this->loadModel('Category');
$categories = $this->Category->find('all', array(
    'fields' => array('id', 'name'),
    'conditions' => array('id' => array(2,3,4,6)),
    'contain' => array(
        'Photo' => array(
            'fields' => array('Photo.name','Photo.ext','Photo.slug'),
            'conditions' => array('Photo.pub' => true),
            'limit' => 1,
            'order' => 'Photo.num ASC',
        )
    )
));