2012-08-12 59 views
0

我執行一個簡單的查詢像這樣與發作獲取關聯:停止抓取關聯

$query = $this->getEntityManager() 
      ->createQuery(' 
     SELECT p,e 
     FROM AcmeDemoBundle:Place p 
     LEFT JOIN p.episodes e 
     WHERE p.id = :id' 
     ) 
      ->setParameter('id',$id); 

這是一個簡單的阿索:

/** 
* @ORM\OneToMany(targetEntity="Episode", mappedBy="place") 
*/ 
protected $episodes; 

這種運作良好。現在,我不希望獲取的情節,只是這個地方的對象(而不是其他):通過延遲加載

$query = $this->getEntityManager() 
      ->createQuery(' 
     SELECT p 
     FROM AcmeDemoBundle:Place p 
     LEFT JOIN p.episodes e 
     WHERE p.id = :id' 
     ) 
      ->setParameter('id',$id); 

這仍在加載發作。 在這種情況下,有沒有辦法避免延遲加載?

非常感謝。

回答

1

像這樣:

$query = $this->getEntityManager() 
      ->createQuery(' 
     SELECT p 
     FROM AcmeDemoBundle:Place p 
     WHERE p.id = :id' 
     ) 
      ->setParameter('id',$id); 

$query->setHint(Query::HINT_FORCE_PARTIAL_LOAD, true); 
+0

這是怎麼回事,當我訪問'$地方 - > getEpisodes()'的情況發生,我會簡單地空集?或者會拋出一個錯誤? [HINT_FORCE_PARTIAL_LOAD](http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html?highlight=HINT_FORCE_PARTIAL_LOAD#query-hints)文件不是很清楚解釋發生了什麼場面。和DQL一樣,'episodes'沒有顯式加載,保持代理收集和依賴於實體屬性的'fetch =「LAZY」配置不是正確的做法嗎? – 2015-12-09 10:24:48