У меня есть 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 |
+----+---------+--------+------+
Теперь я хочу выбрать только те строки, где:
- parent === null AND rate> = 1
- parent! == null AND parent.rate> = 1
В результате должны появиться строки 3
и 6
.
Как мне написать этот запрос, используя ExpressionLanguage Doctrine?