Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-3193

Paginator hydrating the iterator with only half the limit

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.4.2
    • Fix Version/s: None
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None
    • Environment:
      PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)
      Copyright (c) 1997-2013 The PHP Group
      Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
          with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

      Description

      When using paginator on a left join for a one to many association, Doctrine is only hydrating half the requested results via the limit set by setMaxResults(). It is giving the correct total as indicated by count() but getIterator() is only returning half the requested results.

      For example, I have 82 results, with a setMaxResults(50), getIterator() only has 25 hydrated!

      My entities are:

      Submission
      /**

      • @ORM\OneToMany(targetEntity="Result", mappedBy="submission", cascade= {"persist", "remove", "refresh", "detach"}

        )
        */
        private $results;

      Result

      /**

      • @ORM\ManyToOne(targetEntity="Submission", inversedBy="results")
      • @ORM\JoinColumn(name="submission_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
        **/
        private $submission;

      And I'm using the following query builder in the submission repository:
      $q = $this->createQueryBuilder('s')
      ->select('s, r')
      ->leftJoin('s.results', 'r')
      ->setFirstResult(0)
      ->setMaxResults(0);

      It seems to be counting each submissions result as one rather than each submission. So it is returning 50, although its 50 results within 25 submissions. I need to find a way to get it to return 50 submissions instead. Maybe I'm doing something wrong?

        Activity

        Hide
        Christophe Coevoet added a comment -

        Can you post your code configuring the paginator too ?

        Show
        Christophe Coevoet added a comment - Can you post your code configuring the paginator too ?
        Hide
        Alan Hartless added a comment -

        Looks like this was my bad. After getting frustrated with trying to get it to work, I had tried all kinds of things including $results = new Paginator($query, false); while I was debugging to see if $fetchJoinCollection made a difference. I had rearranged my query multiple times but forgot to remove the false so of course it continued to fail. Now that I've removed it (so it defaults to true), the query works correctly.

        Thanks,
        Alan

        Show
        Alan Hartless added a comment - Looks like this was my bad. After getting frustrated with trying to get it to work, I had tried all kinds of things including $results = new Paginator($query, false); while I was debugging to see if $fetchJoinCollection made a difference. I had rearranged my query multiple times but forgot to remove the false so of course it continued to fail. Now that I've removed it (so it defaults to true), the query works correctly. Thanks, Alan

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Alan Hartless
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: