Доктрина — Запрос с условием на связанный объект

У меня есть эта схема:

 Entity        Doctrine-generated        Entity
+++++++++       ++++++++++++++++        +++++++
+Student+ ----- +Student/Events+ ------ +Event+
+++++++++       ++++++++++++++++        +++++++

Это говорит о том, что у ученика может быть много событий, и он представлен отношением ManyToMany. Студент — это сторона отношений.

каждый Event добавляется с приращением id и связаны с Student, Конечно, таблица сопоставления генерируется доктриной автоматически из-за ManyToMany,

я использую event sourcing для этого, так что каждый Student имеет statusэтот статус — последнее событие студента.

Теперь я хотел бы получить все Students которые имеют данный статус, скажем, например, «IN_REVIEW». Помните, что статус представлен последним событием Студента.

¿Как я могу сделать это с доктриной за одну поездку в базу данных? Более конкретно, я хотел бы сделать это с помощью построителя запросов.

PD: у меня есть следующий код:

  $qb->select('a')
->from("DnDRaHApiBundle:Student", "a")
->leftJoin("a.status", "s");

Но не могу понять, как сделать запрос к таблице сопоставления. Я уже думал о получении всех Events из Student в обратном порядке идентификаторов, затем используйте это для запроса ученика, но мне не нравится такой подход, должен быть лучший способ.

0

Решение

С тем, что я понимаю, я могу предложить вам это:

$qb->select('Distinct a')
->from("DnDRaHApiBundle:Application", "a")
->leftJoin("a.status", "s")
->where('s.name = :name')//change name and put your real attribute
->orderBy('s.id','Desc')//the most recent have a the higher id
->setParameter('name','APPROVED');
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector