可以在没有where()的情况下使用Doctrine QueryBuilder和Where()吗?

时间:2013-04-24 07:20:18

标签: doctrine query-builder doctrine-query

在Doctrine中,使用QueryBuilder构建查询时,第一个where子句是否必须使用$qb->where()定义,还是可以直接使用$qb->andWhere()。例如,这是否有效:

$qb->select('Mystuff\Entity\User','u');
$qb->andWhere('usertype = :usertype');
$qb->andWhere('usercategory = :usercategory');

或者,作为一个更相关的例子:

$filter = array('usertype'=>'basic','usercategory'=>'business');
$qb->select('Mystuff\Entity\User','u');
foreach ($filter as $fkey => $fval) {
   $qb->andWhere($fkey.' = :'.$fval);
}

1 个答案:

答案 0 :(得分:6)

是的,这将有效。在添加提交的标准之前,where()会删除任何其他条件,而andWhere()会根据任何现有条件附加到AND表达式。