我有以下数据模型: 我有可以发帖的类别。那些艺术品可以有很多类别。 NowIi想要从一个类别中选择所有文章。
到目前为止我尝试的是:
$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);
现在我想将这个查询提供给一个分页包,它希望得到所有帖子的列表。
问题是,此查询返回“类别”对象。
如何才能从某个类别中获取帖子?
我正在使用Symfony 2和KnpPaginatorBundle
答案 0 :(得分:0)
我建议您在另一个查询中选择特定类别的帖子。
备选方案 - 以及您要求的内容 - 可能与ArrayCollections一起使用:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#initializing-collections 因此,您可以从Category对象中获取所有帖子。
答案 1 :(得分: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);