9

我需要你的帮助。我有这个 SQL 查询:

SELECT * , COUNT( * ) AS count FROM mytable GROUP BY email ORDER BY id DESC LIMIT 0 , 30

但我想在 Symfony2 中使用 Doctrine 和 createQueryBuilder() 来执行此操作。我试试这个,但没有奏效:

$db = $this->createQueryBuilder('s');
$db->andWhere('COUNT( * ) AS count');
$db->groupBy('s.email');
$db->orderBy('s.id', 'DESC');

你能帮我吗 ?谢谢 :)

4

3 回答 3

8

您需要运行 2 个查询:

$db = $this->createQueryBuilder();
$db
    ->select('s')
    ->groupBy('s.email')
    ->orderBy('s.id', 'DESC')
    ->setMaxResults(30);

$qb->getQuery()->getResult();

$db = $this->createQueryBuilder();
$db
    ->select('count(s)')
    ->groupBy('s.email')
    //->orderBy('s.id', 'DESC')
    ->setMaxResults(1);

$qb->getQuery()->getSingleScalarResult();
于 2014-02-17T14:49:49.543 回答
2

我试着用

$query->select('COUNT(DISTINCT u)');

到目前为止它似乎工作正常。

于 2015-06-12T21:21:22.903 回答
2
$db = $this->createQueryBuilder('mytable');
$db
    ->addSelect('COUNT(*) as count')
    ->groupBy('mytable.email')
    ->orderBy('mytable.id', 'DESC')
    ->setFirstResult(0)
    ->setMaxResults(30);
$result = $db->getQuery()->getResult();

希望它有帮助,即使它是一个旧堆栈

于 2017-03-15T14:24:12.557 回答