我想知道如何设置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();
答案 0 :(得分:2)
我发现DQL不支持限制所以我选择了原生sql。
$stmt = $this->getEntityManager()->getConnection()->prepare($query);
$stmt->execute();
return $stmt->fetchAll();
这样你可以用$ query变量做任何你想做的事情,你可以设置限制和everythign,因为它是一个普通的sql语句。