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

时间:2015-08-31 00:32:37

标签: symfony doctrine subquery limit dql

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

例如我想选择最后100个帖子并做一些操作。

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

如何使用此结果在下一个查询中从中进行选择?

 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();

1 个答案:

答案 0 :(得分:2)

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

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

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