2013-03-31 3 views
1

두 개의 엔티티 인 일대 다 관계의 Order와 Orderline이 있습니다. 주문의 데이터 만 필요로하는 목록이 있지만 Doctrine은 각 주문에 대한 주문 행을 쿼리합니다. 쿼리에서 Orderlines에 가입하지 않았습니다. Doctrine이 주문 행을 질의하는 것을 막을 수있는 방법은 무엇입니까? 컨트롤러에 사용Symfony2에서 관련 엔티티가 로딩되는 것을 어떻게 막을 수 있습니까?

검색어 :

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

일대 주문 클래스의 주석 :

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

대일 주석 주문 행 클래스 :

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

답변

5

Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD

0을 사용하여 교리에 대한 힌트를주세요.
$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

감사를 참조하십시오! 내 문제가 해결되었습니다. – user1995453

관련 문제