我在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子句中列出的条件显示每个事件。
答案 0 :(得分:0)
我无法轻易找到实现这一目标的方法,特别是如果我们假设你正在使用它来检索标准的学说实体集合,因为额外的分组/属性不会真的如此你可以传递给他们的东西。
如果您需要对这些进行分组,只是为了显示它们,就像它们在您的标记中输出一样,我会考虑在您的实体类中添加其他方法以便您检测哪种&#39;键入&#39;它们基于查询中定义的类似条件,例如使用标准字符串匹配函数。
否则,您的选项将过滤集合(ArrayCollections带有一个方法,可以轻松地执行此操作)或将其分成多个查询,根据您的方法,我假设您试图避免。