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

Ila*_*ste 2 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');
Run Code Online (Sandbox Code Playgroud)

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

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

pet*_*est 6

是的,这将有效.where()在添加提交的条件之前删除任何其他条件,同时andWhere()附加到AND具有任何现有条件的表达式.