2013-03-31 2 views
1

У меня есть две сущности, заказ и заказ с отношениями «один ко многим». У меня есть список, где мне нужны только данные из заказов, но Doctrine делает запрос для ордеров для каждого заказа. Я не присоединился к Orderlines в запросе. Как предотвратить Doctrine для запроса строк заказа?Как предотвратить загрузку связанных объектов в Symfony2?

Query используется в контроллере:

$query = $em->createQuery("SELECT o FROM SomeBundle:Order o JOIN o.shop s JOIN s.user u WHERE u.id = :user_id AND o.status = :status") 
    ->setParameter('user_id', $user->getId()) 
    ->setParameter('status', 'paid'); 
$orders = $query->getResult(); 

Один-ко-многим аннотаций в классе Order:

/** 
* @ORM\OneToMany(targetEntity="Orderline", mappedBy="order") 
*/ 
protected $orderlines; 

Много-к-одному аннотаций в классе OrderLine:

/** 
* @ORM\ManyToOne(targetEntity="Order", inversedBy="orderlines") 
*/ 
protected $order; 

ответ

5

Дайте намек на доктрину, используя Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD

$query = $em->createQuery("SELECT partial o.{id} FROM SomeBundle:Order o JOIN o.shop s JOIN s.user u WHERE u.id = :user_id AND o.status = :status") 
    ->setParameter('user_id', $user->getId()) 
    ->setParameter('status', 'paid'); 

$query->setHint(Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD, 1); 

$orders = $query->getResult(); 

ИЛИ

Смотрите эту http://docs.doctrine-project.org/en/2.1/tutorials/extra-lazy-associations.html

+0

Спасибо !. Hnting решила мою проблему. – user1995453

Смежные вопросы