Есть три сущности Entity1, Entity2, Entity3. На каждую сущность привязана Active Record и соответствено таблица из БД.
Связь Entity1 и Entity2 1:1, связь Entity2 и Entity3 - 1:N.
В моделях прописаны и extraFields() и геттеры, которые возвращают ActiveQuery. В общем, по стандарту в yii2. В итоге если делать запрос вида:
Код: Выделить всё
/entity1?expand=entity2.entity3
Код: Выделить всё
{
"...": ...,
"...": ...,
"entity2": {
"...": ...,
"...": ...,
"entity3": [
{"...": ...,},
{"...": ...,},
{"...": ...,},
]
}
}
Вопрос: как это можно всё безболезненно организовать так, чтобы у меня осталась возможность получать связанные данные в запросе вот так: /entity1?expand=entity2 и /entity1?expand=entity2.entity3 и чтобы особо не пришлось что-то переделывать в ActiveRecord модели(ях)? Я думал, что entity2 и entity3 переделаю из AR в наследники от Model и что-то незначительное допишу переопределю и всё... Но кажется всё намного сложнее. Подскажите, куда двигаться, как реализовать.
---
P.S. По-тупому я могу реализовать: например в геттере первой модели прописать условие: если в GET запросе есть expand=entity2.entity3, то сделать запрос по API и в геттере добавить entity2 с вложенным entity3, если в запросе просто expand=entity2 - вернуть объект только со вложенным entity2. Но это очень глупо. Хочется чего-то более элегантного