Doctrine: Как выбрать категорию root и все ее дочерние элементы, имеющие поле "rate", присутствующее, только если это категория root - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть Category сущность.

Эта Category сущность является самостоятельной ссылкой: у меня может быть root категория ´Category :: parent === null ) while children categories have Category :: parent`, который ссылается на идентификатор родительской категории.

Родительская категория всегда является категорией root, поэтому у меня есть только два уровня: root уровень и дочерний уровень:

RootCategory_1
  Child_1_1
  Child_1_2
  Child_1_3
RootCategory_2
  Child_2_1
  Child_2_2
  Child_2_3

Невозможно иметь дочернюю категорию дочерней категории (ЭТО НЕ ВОЗМОЖНО: ChildCategory_1_1> ChildChildCategory_1_1_1).

Это говорит о том, что у меня такая ситуация:

+----+---------+--------+------+
| ID |  NAME   | PARENT | RATE |
+----+---------+--------+------+
| 1  | Root 1  | null   | null |
| 2  | Root 2  | null   | 0    |
| 3  | Root 3  | null   | 1    |
| 4  | Child 1 | 1      | null |
| 5  | Child 2 | 2      | null |
| 6  | Child 3 | 3      | null |
+----+---------+--------+------+

Теперь я хочу выбрать только те строки, где:

  1. parent === null AND rate> = 1
  2. parent! == null AND parent.rate> = 1

В результате должны появиться строки 3 и 6.

Как мне написать этот запрос, используя ExpressionLanguage Doctrine?

...