Symfony doctrine group by max date timestamp

时间:2017-08-04 08:06:57

标签: php mysql symfony doctrine-orm group-by

我想在某些条件下从表o中选择值,并按groupKey分组。此查询工作正常,但现在查询返回我的第一个分组值。我需要使用MAX时间戳检索分组值。

如果有一个带有groupKey的两个或更多值的示例我需要一个o.createdAt值更新的那个。

    $qb = $this->createQueryBuilder('order');
    $expr = $qb->expr();

    return $qb
        ->select('order, (CASE WHEN order.tsmOrderNumber IS NOT NULL THEN order.tsmOrderNumber ELSE order.id END) as groupKey')
        ->where('order.user =:user')
        ->andWhere('order.status =:status')
        ->andWhere(
            $expr->orX(
                $expr->andX(
                    $expr->isNotNull('order.wayBillNumber'),
                    $expr->neq('order.wayBillNumber', "''"),
                    $expr->between('order.createdAt', ':dateFrom', ':dateTo')
                ),
                $expr->andX(
                    $expr->orX(
                        $expr->isNull('o.tsmNumber'),
                        $expr->eq('o.tsmNumber', '\'\'')
                    ),
                    $expr->between('order.createdAt', ':dateFrom2', ':dateTo')
                )
            )
        )
        ->setParameters(
            [
                'status'    => Order::STATUS_COMPLETED,
                'user'      => $user,
                'dateFrom'  => (new \DateTime())->modify('-2 month'),
                'dateFrom2' => (new \DateTime())->modify('-6 month'),
                'dateTo'    => new \DateTime()
            ]
        )
        ->groupBy('groupKey')
        ->orderBy('order.createdAt', 'DESC')
        ->getQuery()
        ->getResult();

0 个答案:

没有答案