我想在我的FakeRepository.php中使用QueryBuilder执行这种类型的查询(它用于搜索表单,用户可以在其中查看某些框)。
if (sizeof($p['types']) > 0) {
$qb->andWhere(
foreach ($p['types'] as $type_id)
{'type.id=' .$type_id.' OR ' }
'1=0');
}
但我的语法错误但我不知道如何解决它:
Parse error: syntax error, unexpected T_FOREACH, expecting ')' in /MyBundle/Entity/FakeRepository.php
非常感谢你的帮助
答案 0 :(得分:0)
您还可以解决此问题:
$arr = array();
foreach ($p['types'] as $type_id){
$arr[] = $qb->expr()->orX("type.id = $type_id");
}
$qb->andWhere(join(' OR ', $arr));
答案 1 :(得分:0)
另一种保留QueryBuilder功能的解决方案
$orX = $qb->expr()->orX();
foreach ($types as $key => $type) {
$orX->add($qb->expr()->eq('types', ':types'.$key));
$qb->setParameter('types'.$key, $type->getId());
}
$qb->andWhere($orX);