我如何在doctrine查询生成器中放置条件

Ran*_*ngh 3 php doctrine-orm symfony-2.1

我有这个问题

$qb->select('u')
           ->from('UserBundle:User', 'u')
           ->where('u.location = :identifier')
           ->orderBy('u.firstName', 'ASC')
           ->setParameter('identifier', 2);
Run Code Online (Sandbox Code Playgroud)

我希望如果$ identifier存在,那么它应该过滤结果,否则我得到所有的结果,如

$qb->select('u')
               ->from('UserBundle:User', 'u')
                       if($identifier)             
                       ->where('u.location = :identifier')
               ->orderBy('u.firstName', 'ASC')
                       if($identifier) 
               ->setParameter('identifier', 2);
Run Code Online (Sandbox Code Playgroud)

可能吗

chi*_*org 9

有可能,您只需要重新构建代码.

$qb->select('u')
           ->from('UserBundle:User', 'u')
           ->orderBy('u.firstName', 'ASC');
if($identifier) {
        $qb->where('u.location = :identifier')
           ->setParameter('identifier', 2);
}
Run Code Online (Sandbox Code Playgroud)