我需要提供一个返回文章的网络服务。
我想在该结果中包含用户关系,以避免我的客户端调用另一个方法来加载用户对象。
我使用数组结果,因为我想要一个数组集合(我认为最好使用它)所以我希望我可以急于加载我的用户。
我试过了:
* @ManyToOne(targetEntity="\My\Model\User\User", fetch="EAGER")
但它看起来不起作用。
编辑,一些代码:
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 :(得分:3)
当您使用DQL查询时,您已添加JOIN
子句以加入相关实体:
$qb->createQueryBuilder('a')
->addSelect('u')
->join('a.user', 'u')
...
当您使用EntityManager获取实体时,正在使用 fetch="EAGER"
和fetch="LAZY"
,即:
$article = $em->find('Entity\Article', 123);