arrays - 渴望加载、ArrayResult 和 Doctrine 2

标签 arrays web-services doctrine-orm eager-loading

我需要提供一个返回文章的网络服务。

我想在该结果中包含用户关系,以避免我的客户调用另一个方法来加载用户对象。

我使用数组结果是因为我想要一个数组集合(我认为使用它更好),所以我希望我可以立即加载我的用户。

我尝试过:

* @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

最佳答案

当您使用 DQL 查询时,您必须添加 JOIN 子句来连接相关实体:

$qb->createQueryBuilder('a')
    ->addSelect('u')
    ->join('a.user', 'u')
    ...
当您使用 EntityManager 获取实体时,将使用

fetch="EAGER"fetch="LAZY",即:

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

关于arrays - 渴望加载、ArrayResult 和 Doctrine 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819612/

相关文章:

c++ 二维数组类的动态分配

java - 在不使用 HashMap 的情况下查找排序的 ArrayList 中最常见的字符串

android - 使用 Android 应用程序调用 Web 服务的最佳替代方法是什么

c++ - 在提供 JSON 数据的 C++/Qt(充当服务器)中创建简单的 WebService

zend-framework - Zend Framework 和 Doctrine 2 - 你把你的实体放在哪里?

javascript - 如何使用下划线的 _.uniq 函数来帮助记录偶数和奇数?

ios - 尝试使 numberOfRowsInSection 计数等于 Swift 中另一个文件的数组计数

web-services - 为什么/如何 SOAP 是有状态的?

symfony - @param注解在symfony2类文件中有什么作用

php - Symfony2 理解 Doctrine 查询加入