Запрос доктрины с условием на количество отношений - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть две сущности: Location и Program.У них есть отношения многие ко многим.Программа имеет атрибут $status, который может быть 'published' или 'unpublished'.

Теперь я хочу запустить запрос (с помощью построителя запросов doctrine), чтобы вернуть все мои Location сущности, которые имеют отношение по крайней мере с 10 Program сущностями с $status, равным 'published',

Мой код на данный момент

    public function findLocationsOfPublishedPrograms()
{
    $qb = $this->createQueryBuilder('l')
        ->innerJoin('l.programs', 'p')
        ->andWhere('p.status = \'published\'')
        ->getQuery()->getResult();
    return $qb;
}

Этот запрос возвращает все Location сущностей, которые имеют по крайней мере одну опубликованную программу.Но можно ли каким-либо образом установить условие, чтобы возвращать только Location сущностей, которые имеют не менее 10 опубликованных программ?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете присоединиться к пользователю. P.status = опубликовано.Затем добавьте сюда со счетом p. *> = 10

Примеры innerJoin с условиями приведены в документах: https://www.doctrine -project.org / projects / doctrine-orm / en / 2.6 / reference/query-builder.html#working-with-querybuilder

...