Bonjour,

J'ai une table USERS, une table GROUPS et une table GROUPS_USERS ainsi qu'une table EVENTS. Les models USERS ET GROUPS ont donc une relation HABTM ensemble.

Dans le controller EVENTS, je souhaite faire apparaître un champ select contenant en option le champ USER.ID et en affichage le champ USER.NAME des utilisateurs appartenant au groupe 2 bref la requete SQL suivante :

SELECT * FROM users AS u JOIN groups_users AS gu ON (gu.group_id = 2 AND gu.user_id = u.id)

Et je galère pour réaliser la requête avec les outils de cake, j'essaie avec le "containable" qui me semble être le plus approprié mais pas moyen d'obtenir cette requete... Merci d'avance pour votre aide

2 réponses


essaye avec cela :

$this->User->find('all',array(
            'conditions' => array(
                            'gu.group_id'=>2,
                            'gu.user_id'=>'u.id'
)));

En faite tu envois une requête à ton model qui traîte les informations que tu souhaites obtenir. Là, à priori ton model User.
Tu lui demandes tout, donc 'all' et à cela tu lui donnes tes conditions. Là, les users du groupe 2

J'espère ne pas dire de connerie, je suis aussi en apprentissage de cakephp.

siriu
Auteur

Hum je n'ai pas réussi à faire la condition sur la liaison alors, j'ai fait :

$this->loadModel('Group');
        $users = array();
        $d = $this->Group->find('all', array('conditions'=>array('id'=>2)));
        foreach ($d as $v){
            foreach ($v'User'] as $t){
                $users$t'id']] = $t'full_name'];
            }
        }
        asort($users);
        $this->set('users', $users);

Ça fonctionne impec... mais je ne suis pas sur que ça soit la méthode la plus propre pour le faire ???
Qu'en penses les Cake's spécialists ?