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
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é.
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',
)
)
));