如何选择某天的唯一访问者(用户)?

问题描述 投票:-2回答:2

我可以整天使用唯一身份用户,但是如果输入某天,则会得到一个空数组。

$query = $this->createQueryBuilder('a')
        ->leftJoin('a.event', 'e')
        ->leftJoin('a.customer', 'c')
        ->select('count(date_format(a.date, \'%Y %m %d\'))')
        ->where('e.id = :id')
        ->andWhere('a.page = :page')
        ->andWhere('c.status = :customer')
        ->setParameter('id', $event)
        ->setParameter('page', $page)
        ->setParameter('customer', $customer)
        ->groupBy('c.id')
        ->having('count(distinct date_format(a.date, \'%Y %m %d\')) > 1');

    if ($date != '') {
        $query = $query
            ->andWhere('date_format(a.date, \'%m/%d/%Y\') = :date')
            ->setParameter('date', $date);
    }
    $query = $query->getQuery()->getResult();
php sql symfony doctrine
2个回答
0
投票

从symfony调试器中,您找到可用于运行在数据库客户端中的可运行查询(在原则下),并查看是否缺少日期格式等其他内容。


0
投票

不知道查询中的“ a”是什么,但是可以说它收集了您的事件的参与:

customer | event | date
 A       |  1    | 2020-06-17
 A       |  1    | 2020-06-18
 B       |  1    | 2020-06-18

现在您将$date设置为2020-06-17。您的andWhere子句将删除带有其他日期的记录:

 A       |  1    | 2020-06-17

现在查询已分组(由于原始查询),并且having(count(distinct date) > 1)(简体)过滤掉了剩余的最后一行。

这显然是在假设下,表具有我假设的语义

所以您可能希望在having中添加一些其他逻辑(也许> 0),或者仅在未设置$date或其他条件时使用它。

© www.soinside.com 2019 - 2024. All rights reserved.