Symfony Doctrine SortBy ToMany объекты отношения

У меня есть сообщение сущности и точки, связанные отношением oneToMany. Я хочу сделать метод, который будет возвращать объекты с наибольшим количеством связанных комментариев. Является ли это возможным? Пожалуйста, помогите, я понятия не имею.

https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/tutorials/ordered-associations.html — стоит ли использовать это?

сущности: Почта:

/**
 * @ORM\Entity(repositoryClass = "App\Repository\PostRepository")
 */
class Post
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type = "integer")
     */
    private $id;

    /**
     * @var Points
     * @ORM\OneToMany(targetEntity = "Points", mappedBy = "post", fetch = "EAGER")
     */
    private $points;

    /**
     * @return Collection|Points[]
     */
    public function getPoints(): Collection {
        return $this->points;
    }

...

точки

/**
 * @ORM\Entity(repositoryClass = "App\Repository\PointsRepository")
 */
class Points
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type = "integer")
     */
    private $id;

    /**
     * @var Post
     * @ORM\ManyToOne(targetEntity = "Post", inversedBy = "points",  fetch = "EAGER")
     */
    private $post;

    public function getPost(): Post {
        return $this->post;
    }

    public function setPost(Post $post ){
        $this->post = $post;
    }
...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
31
2

Ответы 2

Предполагая, что вы уже можете вернуть сообщение с его баллами, вы можете попробовать что-то вроде этого:

в App\Repository\PostRepository:

public function postsByPoints() {
    return $this->getEntityManager()->createQueryBuilder()
        ->select('p.post, count(pt.points) N)
        ->from('App:Points', 'pt')
        ->join('pt.post', 'p')
        ->where('some where clause') <- delete this if you're not selecting a subset
        ->groupBy('p.post')
        ->orderBy('N')
        ->getQuery()->getResult();
}

В каком-то контроллере:

$em = $this->getDoctrine()->getManager();
$postsByPoints = $em->getRepository('App:Post')->postsByPoints();

NB: не тестировалось

почти нормально, [Semantical Error] line 0, col 9 near 'post, count(pt.points)': Error: Class App\Entity\Post has no field or association named post

user10567054 02.02.2019 09:47

Это рабочий (для меня) код

        return $this->createQueryBuilder('p')
            ->innerJoin('p.user', 'c')
            ->innerJoin('p.points', 'pp')
            ->andWhere("p.date > '".$now->format("Y-m-d H:i:s")."'")
            ->setMaxResults($max)
            ->groupBy('pp.post')
            ->orderBy('pp.post','DESC')
            ->getQuery()
            ->getResult();

Другие вопросы по теме