2016-10-26 5 views
1

У меня есть проект, работающий на Apigility + Doctrine. С нуля (автоматически без написания дополнительного кода) я могу получить объекты и коллекции с разбивкой на страницы, фильтрацией и т. Д.Apigility + Doctrine: пользовательский ответ

Это прекрасно при извлечении строк БД, однако большинству служб требуется вернуть гораздо больше данных. Например: список дел, где «задачи» имеют родителей, если вы хотите получить это, как дерево, вам сначала придется обработать его. Очень часто мне нужны флаги, чтобы сообщить интерфейсу, как обрабатывать данные или клавиши для отображения или скрытия материала. Иногда полезно извлекать дополнительную информацию, которая не выражена в базе данных как FK или PK, и т. Д.

До сих пор с помощью Apigilty + Doctrine, если я хочу добавить ЛЮБОЙ информации на вывод, мне нужно изменить Entity, настройте правильные клавиши, и он работает. Однако из предыдущих примеров видно, что данные, которые мне нужны, НЕ поступают из базы данных, или я не могу просто выразить отношение как зависимость БД.

Вопросы:

  1. Что такое правильный способ сделать это?
  2. Есть ли документация об этой проблеме?
  3. Как я могу настроить свой вывод, сохраняя правильную структуру HAL?

ответ

1

По умолчанию значения Entity будут указаны как ответ, как есть. Если вы хотите изменить значение (например: получение родительских данных, извлечение дочерних данных или изменение формата данных), вы должны создать Hydrator для этого Entity и пользовательский Hydrator Strategy для этого значения Entity.

Вот Hydrator пример из моего Apigility и доктрина проекта

https://github.com/aqilix/zf3-apigilty-oauth2/blob/1.0.1/module/User/src/V1/Hydrator/UserProfileHydratorFactory.php