【问题标题】:Symfony2, querybuilder's Doctrine requestSymfony2,querybuilder的Doctrine请求
【发布时间】:2013-02-01 11:57:56
【问题描述】:

我有一个基本表 article 链接到 id 的表 category(经典),我想提出一个原则请求,按类别仅检索 5 篇文章(适用于所有类别)

此请求将所有类别的文章归还给我,我只想要 5 篇

public function getArticlesAndCategs(){
    $qb = $this->createQueryBuilder('c')
            ->orderBy('c.id','DESC')
                ->leftJoin('c.articles', 'a')
                ->addSelect('a')
                ->addOrderBy('a.id','DESC')
            ->getQuery();
    return $qb->execute();                
}

你能帮我吗? 谢谢

【问题讨论】:

  • 不,谢谢!我知道如何使用简单的 sql,但我想要一个学说 querybuilder 请求。
  • ==> 我想要一个学说 querybuilder 请求
  • 这就是 ORM 名声不好的原因。您正在尝试使用为 CRUD 和基于 ID 的连接和查找而设计的东西来执行复杂的数据库查询。停下来想想你正在做的事情的价值,以及为什么你“想要”一个原则请求,而不是用 SQL 编写你的结果,而只是使用 createQuery 调用。

标签: php sql symfony doctrine query-builder


【解决方案1】:

不幸的是,这不是一件容易的事。至少我还没有找到令人满意的解决方案(对我来说很满足;))。

你可以做三件事:

  1. 遍历类别并为每个类别检索 5 个帖子。这当然会导致许多数据库请求与您拥有的类别一样多。

  2. 返回所有已加入帖子的类别并在 php.ini 中进行迭代。缺点 - 您将返回所有帖子,因此如果您有很多帖子,这可能意味着使用了大量内存。

  3. 如果您不必坚持 Doctrine,您可以从这里尝试解决方案:mySQL Returning the top 5 of each category

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    相关资源
    最近更新 更多