4

私はこのクエリを持っています

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

$ identifierが存在する場合は結果をフィルタリングする必要があります。そうでない場合は、次のようなすべての結果が得られます。

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

出来ますか

4

1 に答える 1

11

コードを再構築するだけでよいのです。

$qb->select('u')
           ->from('UserBundle:User', 'u')
           ->orderBy('u.firstName', 'ASC');
if($identifier) {
        $qb->where('u.location = :identifier')
           ->setParameter('identifier', 2);
}
于 2012-08-15T07:31:07.203 に答える