Ok merci pour les infos !! 2011/8/26 stakovicz <stakov...@gmail.com>
> En fait il faut utiliser Doctrine::getTable() qui permet "de dire à > Doctrine" que ce sont des opérations : > > public function getActiveOperations() { > $q = Doctrine::getTable('Operation') > ->createQuery('o') > ->innerJoin('o.Status s) > ->where('o.user_id = ?', $this->getId()) > ->andWhere(s.priority = 1) > > ->andWhere('o.expires_at > ?', date('Y-m-d H:i:s', time())) > ->OrderBy('o.expires_at DESC'); > > return $q->execute(); > } > > Le 26 août 2011 14:05, Cyril Flieller <cyril.fliel...@gmail.com> a écrit : > > Merci pour ta réponse, seulement comme je l'ai précisé, je sais déjà ça. > Ma > > question est surtout de savoir si la requête en rouge était bonne, je > sais > > qu'elle n'est pas réutilisable. Car si dans le from je mets plusieurs > > tables, comment Doctrine sait quelle collection il doit retourner. > > > > exemple : > > > > public function getActiveOperations(){ > > $q = Doctrine_Query::create() > > ->from('Operation o, o.Status s) > > ->where('o.user_id = ?', $this->getId()) > > ->andWhere(s.priority = 1) > > ->andWhere('o.expires_at > ?', date('Y-m-d H:i:s', time())) > > ->OrderBy('o.expires_at DESC'); > > > > return $q->execute(); > > } > > > > > > 2011/8/26 stakovicz <stakov...@gmail.com> > >> > >> Salut, > >> > >> La convention veut que l'on mettes les méthodes de manipulations de > >> collections d'objets dans les operationTable.class.php. > >> De plus cela permet de réutiliser la méthode getActiveOperations(). > >> Image demain tu doit filtrer les opérations sur un autre critère. Tu > >> n'as qu'à modifier la fonction getActiveOperations() et comme toutes > >> tes requêtes se bases sur cette fonction il n'y a rien d'autre à > >> faire. > >> > >> Mais j'aurais même fait comme ceci : > >> > >> //user.class.php > >> public function getActiveOperations(){ > >> $q = Doctrine_Query::create() > >> ->from('Operation o') > >> ->where('o.user_id = ?', $this->getId()); > >> > >> return Doctrine_Core::getTable('Operation') > >> ->retrieveActives($q) > >> ->execute(); > >> } > >> > >> //operationTable.class.php > >> public function retrieveActives(Doctrine_Query $q = null){ > >> if (is_null($q)){ > >> $q = Doctrine_Query::create() > >> ->from('Operation o'); > >> } > >> // Récupère le nom de l'alias de la requête > >> $root = $q->getRootAlias(); > >> > >> $q->andWhere($root.'.expires_at > ?', date('Y-m-d H:i:s', time())) > >> ->addOrderBy($root.'.expires_at DESC'); > >> > >> return $q; > >> } > >> > >> -- > >> Albin > >> > >> Le 26 août 2011 12:57, Cyril Flieller <cyril.fliel...@gmail.com> a > écrit : > >> > Hello, > >> > > >> > quelqu'un peut-il m'expliquer la différence entre ces deux > "techniques" > >> > pour > >> > récupérer toutes les opérations actives d'un utilisateur : > >> > > >> > //user.class.php > >> > > >> > public function getActiveOperations(){ > >> > $q = Doctrine_Query::create() > >> > ->from('Operation o') > >> > ->where('o.user_id = ?', $this->getId()) > >> > ->andWhere('o.expires_at > ?', date('Y-m-d H:i:s', time())) > >> > ->OrderBy('o.expires_at DESC'); > >> > > >> > return $q->execute(); > >> > } > >> > > >> > et > >> > > >> > //user.class.php > >> > > >> > public function getActiveOperations(){ > >> > $q = Doctrine_Query::create() > >> > ->from('Operation o') > >> > ->where('o.user_id = ?', $this->getId()); > >> > > >> > return Doctrine_Core::getTable('Operation')->getActiveOperation($q); > >> > } > >> > > >> > //operationTable.class.php > >> > > >> > public function getActiveOperations(Doctrine_Query $q = null){ > >> > if (is_null($q)){ > >> > $q = Doctrine_Query::create() > >> > ->from('Operation o'); > >> > } > >> > > >> > $q->andWhere('o.expires_at > ?', date('Y-m-d H:i:s', time())) > >> > ->addOrderBy('o.expires_at DESC'); > >> > > >> > return $q->execute(); > >> > } > >> > > >> > Outre le fait que cela permet de factoriser si l'on a besoin d'une > >> > méthode > >> > qui récupère toutes les opérations actives peu importe l'utilisateur. > En > >> > fait ma question est plutôt : est-ce que la technique en rouge est > >> > fausse > >> > d'un point de vu logique ? > >> > > >> > -- > >> > Vous recevez ce message, car vous êtes abonné au groupe Google > >> > Groupes Symfony-fr. > >> > Pour envoyer un message à ce groupe, adressez un e-mail > >> > à symfony-fr@googlegroups.com. > >> > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > >> > symfony-fr+unsubscr...@googlegroups.com. > >> > Pour plus d'options, consultez la page de ce groupe : > >> > http://groups.google.com/group/symfony-fr?hl=fr > >> > >> -- > >> Vous recevez ce message, car vous êtes abonné au groupe Google > >> Groupes Symfony-fr. > >> Pour envoyer un message à ce groupe, adressez un e-mail > >> à symfony-fr@googlegroups.com. > >> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > >> symfony-fr+unsubscr...@googlegroups.com. > >> Pour plus d'options, consultez la page de ce groupe : > >> http://groups.google.com/group/symfony-fr?hl=fr > >> > > > > -- > > Vous recevez ce message, car vous êtes abonné au groupe Google > > Groupes Symfony-fr. > > Pour envoyer un message à ce groupe, adressez un e-mail > > à symfony-fr@googlegroups.com. > > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > > symfony-fr+unsubscr...@googlegroups.com. > > Pour plus d'options, consultez la page de ce groupe : > > http://groups.google.com/group/symfony-fr?hl=fr > > > > > > -- > Albin Kester > ----------------------------- > 06 60 80 86 20 > 02 49 84 00 32 > 95 rue de la Patouillerie > Bât. 8Q > 44700 Orvault > > -- > Vous recevez ce message, car vous êtes abonné au groupe Google > Groupes Symfony-fr. > Pour envoyer un message à ce groupe, adressez un e-mail à > symfony-fr@googlegroups.com. > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > symfony-fr+unsubscr...@googlegroups.com. > Pour plus d'options, consultez la page de ce groupe : > http://groups.google.com/group/symfony-fr?hl=fr > > -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à symfony-fr@googlegroups.com. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse symfony-fr+unsubscr...@googlegroups.com. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr