【问题标题】:Subquery's with limit in Doctrine/Symfony using DQL在 Doctrine/Symfony 中使用 DQL 限制子查询
【发布时间】:2015-08-31 00:32:36
【问题描述】:

我想知道如何设置 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();

【问题讨论】:

    标签: symfony doctrine subquery limit dql


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      相关资源
      最近更新 更多