object update Избегайте доктрины для возврата всех объектов




symfony migration (2)

Используя Symfony2 / doctrine2, в то время как мы используем функцию find () для получения определенного объекта на основе выделенного объекта, если есть отношения (например, OneToMany), Doctrine возвращает все остальные объекты.

Например :

$em = $this->get(
         'doctrine.orm.entity_manager', 
          $request->getSession()->get('entity_manager')
);
$product = $em->getRepository('MyBundle:Product')->find($id);

Результатом на $ product будет объект Product + другие связанные объекты, такие как (Store, Category, ... и т. Д.).

Как мы можем контролировать доктрину, чтобы определить, какой объект нам нужно вернуть.

Я могу использовать Querybuilder, но я смотрю, есть ли какая-либо функция.



Доктрина возвращает все остальные объекты

Это не работает, по крайней мере, по умолчанию.

В доктрине используется то, что называется ленивой загрузкой .
Из официальной документации у вас есть следующий пример:

<?php
/** @Entity */
class Article
{
    /** @Id @Column(type="integer") @GeneratedValue */
    private $id;

    /** @Column(type="string") */
    private $headline;

    /** @ManyToOne(targetEntity="User") */
    private $author;

    /** @OneToMany(targetEntity="Comment", mappedBy="article") */
    private $comments;

    public function __construct {
        $this->comments = new ArrayCollection();
    }

    public function getAuthor() { return $this->author; }
    public function getComments() { return $this->comments; }
}

$article = $em->find('Article', 1);

И следующее объяснение:

Вместо того, чтобы передать вам реальный экземпляр автора и коллекцию комментариев, Doctrine создаст для вас экземпляры прокси. Только если вы впервые получите доступ к этим прокси, они пройдут через EntityManager и загрузят свое состояние из базы данных.

Ссылка: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#entity-object-graph-traversal

Дополнительная информация по теме: http://www.doctrine-project.org/blog/doctrine-lazy-loading.html





entity