我正在尝试使用教义查询生成器运行过滤器,我正在使用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/

10-12 20:15