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

Répondre à