Начиная с версии PHP 5.6, вы, вероятно, можете использовать PHP splat ...
для расширения массива до аргументов.
$query = $this->createQueryBuilder('c');
$expr = $query->expr();
$conditions = [];
$valueNo = 0;
foreach ($categs as $value) {
$conditions[] = $expr->eq('c.contentCategory', 'value'.$valueNo);
$query->setParameter('value'.$valueNo, $value);
$valueNo++;
}
$query->andWhere($expr->orX(...$conditions));
Отказ от ответственности: я не проверял это.
См .: https://www.php.net/manual/en/functions.arguments.php
Вы также можете использовать ... при вызовефункции для распаковки массива или переменной или литерала Traversable в список аргументов:
Редактировать:
Если ваш запрос прост, вы можете просто использовать orWhere
вместо.
$query = $this->createQueryBuilder('c');
$expr = $query->expr();
$valueNo = 0;
foreach ($categs as $value) {
$query->orWhere($expr->eq('c.contentCategory', 'value'.$valueNo));
$query->setParameter('value'.$valueNo, $value);
$valueNo++;
}
Редактировать 2:
Возможно, вы даже захотите использовать вместо этого in
предложение.
$query->where($expr->in('c.contentCategory', ':values'));
$query->setParameter('values', $categs);`