【问题标题】:Doctrine Query builder count of related相关的 Doctrine Query builder 计数
【发布时间】:2017-07-09 21:33:10
【问题描述】:

假设我有一个具有双向关系的典型论坛设置(帖子、cmets、用户)

来自我的帖子存储库的片段

Builder('post')
            ->innerJoin('post.user', 'user')
            ->addSelect('user')
            //->innerJoin('post.comment', 'comment')
            ->setMaxResults(25)

这就是我所拥有的。我将结果传递给 Symfony 3 中的 twig。我可以使用 post.user 和其他相关的帖子字段。

我需要能够获得总回复/cmets 和最近评论的日期。

我可以在 SQL 中做到这一点,但我正在努力使用查询生成器。 我不反对只使用 sql/dql,但如果我总是退回到 sql,我将永远无法很好地掌握构建器。

因为我是一个新手,所以我什至指点我到谷歌可以帮助我的谷歌 fu 让我失望了。

【问题讨论】:

    标签: symfony doctrine query-builder


    【解决方案1】:

    试试这个方法:

    $count = $this->createQueryBuilder('p')
                ->join('p.comments', 'c')
                ->select('count(c.id)')
                ->getQuery()
                ->getSingleScalarResult();
    

    【讨论】:

    • 抱歉,我的帖子措辞不够准确。拥有所有 cmets 期间的总数不是我想要做的。它是每个帖子的总cmets。
    • 在 sql 中,我只需将我的帖子表加入到子查询中,该子查询从 cmets 添加计数和最大值(日期),结果将包含我需要的关于帖子的所有信息,以及回复的数量,以及最近的帖子。
    • 好的,知道了。好吧,我建议您将其拆分为单独的查询。因为我很确定查询生成器是不可能的。否则,如果您不想这样做 - 原生 sql 就是这样。
    【解决方案2】:

    原来这不是查询生成器的用例。我最终写了 dql 来完成它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2015-10-22
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多