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

Répondre à