Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 按innerJoin表与条令排序_Symfony_Doctrine Orm - Fatal编程技术网

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')
?非常感谢,我从来没有这样想过。