Doctrine 左联限制主义

Doctrine 左联限制主义,doctrine,left-join,limit,Doctrine,Left Join,Limit,我请求使用leftJoin获取所有品牌和这些品牌的所有项目: $brands = Doctrine_Query::create() ->from('Brand b') ->leftJoin('b.Item i') ->fetchArray(); 但我只想获得每个品牌的10个商品,如何限制商品leftJoin?您必须使用如下子查询: ->leftJoin('b.Item i WITH i.id IN (SELECT i2.id FROM Item i2 WHERE i2.

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

$brands = Doctrine_Query::create()
->from('Brand b')
->leftJoin('b.Item i')
->fetchArray();

但我只想获得每个品牌的10个商品,如何限制商品leftJoin?

您必须使用如下子查询:

->leftJoin('b.Item i WITH i.id IN (SELECT i2.id FROM Item i2 WHERE i2.brand_id=b.id LIMIT 10)')

我没有测试这个,但它应该可以工作。

我知道已经晚了,但这在我的谷歌搜索中实际得分为nr 1,没有得到回答: 建议使用Paginaror对象

以下是一个例子:

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

        // 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());

他询问如何为每个品牌购买10件商品,而不是对品牌进行分页。