开发者

Eager load, ArrayResult & Doctrine 2

I need to provide a webservice which returns articles.

I want to include the user relationship in that result to avoid my clients to call another method to load the user object.

I use an Array Result because I want a collection of array (I think it's better to work with) so I开发者_高级运维 wish I could eager load my user.

I tried:

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

But it doesn't look to work.`


Edit, some code:

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;
}

And I call this method with the $useArrayResult flag sets to TRUE


When you're using DQL query you have add JOIN clause to join related entities:

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

fetch="EAGER" and fetch="LAZY" are being used when you're fetching entities using EntityManager, ie:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜