Symfony 按innerJoin表与条令排序
我在两个实体之间有一个单一的关系:商店和评论。我想显示一份按上次审核日期订购的店铺列表。 这就是我迄今为止所尝试的:Symfony 按innerJoin表与条令排序,symfony,doctrine-orm,Symfony,Doctrine Orm,我在两个实体之间有一个单一的关系:商店和评论。我想显示一份按上次审核日期订购的店铺列表。 这就是我迄今为止所尝试的: return $this->createQueryBuilder('s') ->innerJoin('s.reviews', 'r', 'WITH', 'r.shop = s.id') ->orderBy('r.createdAt') // <- that does nothing on the order
return $this->createQueryBuilder('s')
->innerJoin('s.reviews', 'r', 'WITH', 'r.shop = s.id')
->orderBy('r.createdAt') // <- that does nothing on the order of the shops
->getQuery()
->getResult();
返回$this->createQueryBuilder('s'))
->innerJoin('s.reviews','r','WITH','r.shop=s.id')
->orderBy('r.createdAt')//getQuery()
->getResult();
这将返回所有商店,但它们根本没有订购…尝试直接在
@ORM\OneToMany mappedBy
关系上设置OrderBy
,如下所示:
/**
* @ORM\OneToMany...
* @ORM\OrderBy({"createdAt" = "DESC"})
*/
private $reviews;
如果你想在商店存储库中使用它,你应该这样尝试
return $this->getEntityManager()
->createQueryBuilder()
->select('s, MAX(r.createdAt) AS maxCreatedAt')
->from('AppBundle:Comment', 'r')
->join('AppBundle:Shop', 's', 'WITH', 'r.shop = s.id')
->groupBy('s')
->orderBy('maxCreatedAt', 'DESC')
->getQuery()
->getResult();
不要忘记相应地修改包名称空间(AppBundle)。运行此代码时会发生什么?你甚至得到了一个结果集吗?你有没有尝试过
->orderBy('r.createdAt','DESC')
?非常感谢,我从来没有这样想过。