如何分离结果

时间:2013-02-22 10:01:48

标签: mysql sql doctrine-orm symfony-2.1 query-builder

我在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子句中列出的条件显示每个事件。

1 个答案:

答案 0 :(得分:0)

我无法轻易找到实现这一目标的方法,特别是如果我们假设你正在使用它来检索标准的学说实体集合,因为额外的分组/属性不会真的如此你可以传递给他们的东西。

如果您需要对这些进行分组,只是为了显示它们,就像它们在您的标记中输出一样,我会考虑在您的实体类中添加其他方法以便您检测哪种&#39;键入&#39;它们基于查询中定义的类似条件,例如使用标准字符串匹配函数。

否则,您的选项将过滤集合(ArrayCollections带有一个方法,可以轻松地执行此操作)或将其分成多个查询,根据您的方法,我假设您试图避免。