【问题标题】:How do I separate the results如何分离结果
【发布时间】:2013-02-07 21:50:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我看不出有什么方法可以轻松实现这一点,尤其是如果我们假设您正在使用它来检索标准的学说实体集合,因为额外的分组/属性实际上不会是您可以传递给这些的东西.

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 2016-01-11
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多