首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Left join with limit原理

Left join with limit原理
EN

Stack Overflow用户
提问于 2012-08-20 19:42:56
回答 2查看 2.6K关注 0票数 4

我用leftJoin请求获取这些品牌的所有品牌和所有项目:

代码语言:javascript
复制
$brands = Doctrine_Query::create()
->from('Brand b')
->leftJoin('b.Item i')
->fetchArray();

但是我只想要每个品牌的10件商品,我怎么才能限制商品leftJoin呢?

EN

回答 2

Stack Overflow用户

发布于 2012-08-21 18:55:20

您必须像这样使用子查询:

代码语言:javascript
复制
->leftJoin('b.Item i WITH i.id IN (SELECT i2.id FROM Item i2 WHERE i2.brand_id=b.id LIMIT 10)')

我没有对此进行测试,但它应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 19:26:48

我知道为时已晚,但这实际上在我的谷歌搜索中得了nr 1,没有人回答:Limiting a doctrine query with a fetch-joined collection?建议使用Paginaror对象

下面是一个示例:

我的代码的源代码包含rss链接和rss提要中的文章。所以在这个例子中,我将获得一个源代码和所有的文章。

代码语言:javascript
复制
        // get the articles (latest first) from source 743
        $q=$this->getDoctrine()->getManager()
          ->createQuery('select s, a from MyCompanyRssBundle:Source s 
          join s.Articles a 
          where s.id = :id 
          order by a.id desc')
          ->setParameter('id',743);
        $q->setMaxResults(1);  // this limits Articles to be only 1
                               // when using $q->getResult();
        $sources=new Paginator($q, $fetchJoin = true);
        $sources=$sources->getIterator();
//      $sources=$q->getResult();
        var_dump($sources[0]->getArticles());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12037010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档