Упорядочить по внутреннему столу с учением - PullRequest
0 голосов
/ 18 октября 2018

У меня есть отношения OneToMany между двумя объектами: Магазин и Комментарий.Я хотел бы отобразить список магазинов, упорядоченных по дате последнего обзора, который они получили.Это то, что я пробовал до сих пор:

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();

Это возвращает все магазины, но они не заказаны вообще ...

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если вы хотите использовать его в своем ShopRepository, попробуйте его следующим образом

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).

0 голосов
/ 18 октября 2018

Попробуйте установить OrderBy непосредственно для вашего @ORM\OneToMany mappedBy отношения следующим образом:

/**
 * @ORM\OneToMany...
 * @ORM\OrderBy({"createdAt" = "DESC"})
 */
private $reviews;
...