我正在尝试使用教义查询生成器运行过滤器,我正在使用expr eq,但是如果我没有过滤器值,我想对expr eq使用一些特殊的符号,该符号会重现所有行。
我的代码:
$q = $qb->select(array('p'))
->from(payment::class, 'p')
->innerJoin(customer::class, 'z', 'WITH', 'p.customer= z.id')
->where(
$qb->expr()->eq('z.id', '?2')
)
->setMaxResults($limit)
->setFirstResult($offset)
->orderBy('p.'.$sortField, $sortType)
->setParameter(2, $filtry['customer'])
->getQuery();
return $q->getResult();
是否可以?我不想为每个过滤器编写不同的查询生成器。
对不起我的英语不好
谢谢
最佳答案
它是一个查询生成器,因此您可以有条件地添加参数,例如:
$qb->select(array('p'))
->from(payment::class, 'p')
->innerJoin(customer::class, 'z', 'WITH', 'p.customer= z.id')
->setMaxResults($limit)
->setFirstResult($offset)
->orderBy('p.'.$sortField, $sortType)
if ($filtry['customer'])
{
$qb->andWhere(
$qb->expr()->eq('z.id', $filtry['customer'])
)
};
$q = $qb->getQuery()
希望这个帮助
关于php - Doctrine2表达式eq特殊字符,用于匹配所有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39161215/