doctrine2 загружает связи «один ко многим» с режимом извлечения, используя слишком много запросов SQL

Я загружаю список многих организаций.
Эти объекты имеют связь «один ко многим» с другими объектами.
Я хочу загрузить все эти другие объекты в одном запросе SQL (вместо одного запроса для каждого объекта в первом списке).

Как описано в документации doctrine2:http://www.doctrine-project.org/docs/orm/2.1/en/reference/dql-doctrine-query-language.html#temporarily-change-fetch-mode-in-dql это должно быть возможно с загрузкой EAGER.

но это не работает, как описано.

мой код:

class User{
    /**
     * @ORM\OneToMany(targetEntity="Address", mappedBy="user", indexBy="id", fetch="EAGER")
     */
    protected $addresses;
    public function __construct(){
        $this->addresses = new ArrayCollection();
    }
}

class Address{
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="addresses")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="UserId", referencedColumnName="id")
     * })
     */
    private $user;
}

class UserRepository{
    public function findUsersWithAddresses(){
        return $this->getEntityManager()
            ->createQuery('SELECT u FROM MyBundle:User u ORDER BY u.name ASC')
            ->setFetchMode('MyBundle\Entity\User', 'addresses', \Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER)
            ->setMaxResults(10)
            ->getResult();
    }
}

Метод UserRepository :: findUsersWithAddresses () выполняет 11 SQL-запросов.

Как я могу сказать Doctrine использовать только один SQL-запрос для загрузки адресных сущностей?

Я использую:

Symfony v2.0.9общая доктрина 2.1.4доктрина-дбал 2.1.5учение 2.1.5

Ответы на вопрос(3)

Ваш ответ на вопрос