2011-07-25 118 views
2

我需要提供一個返回文章的web服務。急切的加載,ArrayResult&Doctrine 2

我想在該結果中包含用戶關係以避免我的客戶端調用另一種方法來加載用戶對象。

我使用數組結果,因爲我想要一個數組的集合(我認爲它更好),所以我希望我可以加載我的用戶。

我想:

* @ManyToOne(targetEntity="\My\Model\User\User", fetch="EAGER") 

但它看起來不work.`


編輯,一些代碼:

public function getPublishedArticles($page, $count, $useArrayResult = false) { 
     $qb = $this->createQueryBuilder('a'); 
     $qb->where('a.status = :status') 
      ->orderBy('a.published_date', 'DESC') 
      ->addOrderBy('a.creation_date', 'DESC') 
      ->setParameter('status', Article::STATUS_PUBLISHED) 
      ->andWhere('a.published_date <= :date') 
      ->setParameter('date', date('Y-m-d')); 
     } 

     $adapter = new PaginationAdapter($qb->getQuery()); 
     $adapter->useArrayResult($useArrayResult); 
     $paginator = new \Zend_Paginator($adapter); 
     $paginator->setItemCountPerPage($itemCount) 
      ->setCurrentPageNumber($page); 

     return $paginator; 
} 

而且我把這種方法用$useArrayResult標誌設置爲TRUE

+0

請發佈你的「選擇代碼」 – Crozin

回答

3

當你使用DQL查詢您有加JOIN條款加入相關實體:

$qb->createQueryBuilder('a') 
    ->addSelect('u') 
    ->join('a.user', 'u') 
    ... 

fetch="EAGER"fetch="LAZY"當你使用的EntityManager獲取實體正在使用,即:

$article = $em->find('Entity\Article', 123); 
+0

非常感謝你,你救了我的一天! – JohnT