我想知道如何使用可选参数进行DQL查询,例如:
public function getUsers($city, $sex, $age)
{
$qb = $this->getEntityManager()->createQueryBuilder()
->select('u')
->where('u.sex = :sex')
->andWhere('u.city = :city')
->andWhere('u.age = :age')
->setParameter(':city', $city);
->setParameter(':sex', $sex);
->setParameter(':age', $age);
$query = $qb->getQuery();
$result = $query->getResult();
}
如果其中一个参数未定义(=NULL),该怎么办?
3条答案
按热度按时间2wnc66cl1#
tpgth1q72#
在这种情况下,设置为
NULL
的参数可能有意义,因为,即使它不是标准的,您也可以用(只是为了举例)u.age = :age
来表示IS NULL
条件,其中age
是NULL
(但是我建议使用read this topic)因此,很明显,如果参数是
NULL
,您需要自己检查它(如果您希望它们是可选的),并且不要添加条件(因此也不要添加参数绑定)。请注意,如果
sex
(作为第一个参数列出)为空,则应在第二个where
条件中对andWhere
使用where
,依此类推。