0

我对 Doctrine QueryBuilder 有以下查询:

$qb = $this->createQueryBuilder('e')
            ->select('e.id, e.name, e.body, e.teaser, e.slug, e.dateBegin, e.dateEnd, e.dateTbd, v.name AS v_name')
            ->innerJoin('e.venue', 'v')
            ->where('v.name LIKE :TBD')
            ->orWhere('v.name LIKE :TBA')
            ->orWhere('e.name LIKE :TBD')
            ->orWhere('e.name LIKE :TBA')
            ->orWhere('e.name LIKE \'none\'')
            ->orWhere('e.name LIKE \'n/a\'')
            ->orWhere('e.teaser LIKE :TBD')
            ->orWhere('e.body LIKE :TBD')
            ->orWhere('e.dateTbd=true')
            ->orWhere('TIME(e.dateBegin) < :earlyMorning AND TIME(e.dateBegin) > :lateNight')
            ->setParameter('TBA', '%TBA%')
            ->setParameter('TBD', '%TBD%')
            ->setParameter('earlyMorning', '06:00:00')
            ->setParameter('lateNight', '23:00:00');

如何在此查询中通过“where”子句分隔结果。我需要使用 where 子句中列出的标准显示每个事件。

4

1 回答 1

0

我看不到一种轻松实现这一点的方法,尤其是如果我们假设您正在使用它来检索标准的学说实体集合,因为您实际上无法将其他分组/属性传递给这些。

如果您需要将它们简单地分组以在输出时显示它们略有不同,例如在您的标记中,我会考虑在您的实体类中添加其他方法,以允许您检测它们基于定义的类似标准的“类型”在您的查询中,例如使用标准字符串匹配函数。

否则,您的选择将是过滤集合(ArrayCollections 带有一种轻松执行此操作的方法)或将其分成多个查询,鉴于您的方法,我假设您正在尝试避免。

于 2013-03-03T22:31:01.233 回答