0

我有以下数据模型:我有可以有帖子的类别。这些文章可以有很多类别。现在我想从一个类别中选择所有文章。

到目前为止我尝试的是:

 $qb = $this->_em->createQueryBuilder()
        ->select('c, p')
        ->from('...Blog\Category', 'c')
        ->leftJoin('c.posts', 'p')
        ->where('c.id = :id')
        ->orderBy('p.created', 'DESC')
        ->setParameter(':id', $catId);

现在我想将此查询提供给期望获得所有帖子列表的分页包。

问题是,这个查询返回一个“类别”对象。

我怎样才能从一个类别中获取帖子?

我正在使用带有 KnpPaginatorBundle 的 Symfony 2

4

2 回答 2

0

我建议您在选择特定类别的帖子时进行另一个查询。

另一种选择 - 以及你所要求的 - 可能是使用 ArrayCollections:http ://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#initializing-collections 所以你重新能够从您的类别对象中获取所有帖子。

于 2013-10-16T22:31:37.330 回答
0

查询错误。当您进行左连接时,它会从左表中选择行。只是翻转它们。

$qb = $this->_em->createQueryBuilder()
        ->select('c, p')
        ->from('c.posts', 'p')
        ->leftJoin('...Blog\Category', 'c')
        ->where($qb->expr()->andX(
           $qb->expr()->eq('c.id', ':id'),
           $qb->expr()->eq('p.category_id', 'c.id')
         )
        ->orderBy('p.created', 'DESC')
        ->setParameter(':id', $catId);
于 2013-10-17T14:48:58.780 回答