将条件数组传递给 doctrine expr()->orx() 方法

2022-08-30 11:25:19

我需要像这样构造DQLQueryBuilder

[QUERY]... AND WHERE e.type = x OR e.type = Y OR e.type = N [...]

数组中有类型 如何将此数组传递给查询生成器?

$qb->andWhere($qb->expr()->orx(CONDITIONS));

类型列表将是动态的,调用每个 foreach 类型循环只会产生更多 AND WHERE 不再有 OR。
我可以存储乘法表达式,然后将其添加到 ?任何想法如何解决这个问题,可能是,常见问题?$qb->andWhereorxandWhere


答案 1

我希望如此,然后我发现这个:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N');
$orX = $qb->expr()->orX();

foreach ($conditions as $condition) {
    $orX->add($condition);
}

$qb->add('where', $orX);

使用@meze建议,您可以简化代码并将 foreach 语句替换为:

$orX->addMultiple($conditions);

答案 2

@DEY他的答案可以简化。不需要前言,这也有效:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N');

$orX = $qb->expr()->orX();
$orX->addMultiple($conditions);

$qb->where($orX);

推荐