2011-07-25 76 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