使用 DQL 的子查询限制在 Doctrine/Symfony

Subquery's with limit in Doctrine/Symfony using DQL

我想知道如何对 1 个查询设置限制,然后根据 selected 结果进行查询。

例如我想select最近的100个帖子并做一些操作。

$first_query= $this->getEntityManager()
    ->createQuery(
        'SELECT p FROM TestBundle:Post p  ORDER BY p.date DESC'
        )
    ->setMaxResults(5); 

如何在下一个查询中使用此结果 select?

 return $this->getEntityManager()
    ->createQuery(
        "SELECT  u.username , max(p.date),d.points,l.name 
        FROM $first_query
        JOIN p.location l JOIN p.user u JOIN u.deeds d
        WHERE l.name = :location
        GROUP BY u.id
        ORDER BY d.points DESC , p.date DESC
        "

        )
    ->setParameter('location' , $location)
    ->getResult();

我发现 DQL 不支持限制,所以我选择了原生 sql。

$stmt = $this->getEntityManager()->getConnection()->prepare($query);
    $stmt->execute();
    return $stmt->fetchAll();

这样你就可以用 $query 变量做任何你想做的事你可以设置限制和一切,因为它是一个普通的 sql 语句。