2010-11-14 30 views

Répondre

2

Il n'y en a pas un dans D2, mais il ne serait probablement pas trop compliqué d'implémenter un système similaire à celui de Yii en utilisant la classe QueryBuilder de Doctrine 2, qui vous permet de construire une requête en pièces, en utilisant un approche plus programmatique.

$qb = $em->createQueryBuilder; 
$qb->select('u') 
    ->from('User', 'u') 
    ->where('active IS NOT NULL); 

Il semble que les magasins de mise en œuvre de critères Yii interroger dans un tableau, et ils sont injectés dans la requête lorsque l'on utilise un champ nommé. Vous pouvez facilement faire quelque chose de similaire qui renvoie un objet QueryBuilder avec les paramètres préchargés.

class UserRepository extends EntityRepository 
{ 
    private $_namedScopes; 

    public getActiveUsersWhoLoggedInLastWeek() 
    { 
     // return a query builder for this model 
     $qb = $this->_namedScopes->initScope(); 

     // start adding pre-defined criteria 
     $qb = $this->_namedScopes->addScope($qb, 'active') 
     $qb = $this->_namedScopes->addScope($qb, 'lastWeek'); 

     return $qb->getQuery()->getResult(); 
    } 
} 

Il y a probablement plusieurs façons d'aborder cela, donc ce n'est qu'un exemple rapide. La partie la plus difficile serait probablement de savoir comment gérer les collisions de critères.