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

Doctrine QueryBuilder和where()是否可以在没有where()的情况下使用?,doctrine,query-builder,doctrine-query,Doctrine,Query Builder,Doctrine Query,在原则中,当使用QueryBuilder构建查询时,第一个where子句是否必须使用$qb->where()定义,或者我可以直接使用$qb->andWhere()。例如,这是否有效: $qb->select('Mystuff\Entity\User','u'); $qb->andWhere('usertype = :usertype'); $qb->andWhere('usercategory = :usercategory'); 或者,作为一个更相关的例子: $filter

在原则中,当使用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);
}

是的,那会有用的
where()
在添加提交的条件之前删除任何其他条件,而
andWhere()
将使用任何现有条件附加到
表达式