Создайте конечную точку для отчета с помощью API Platform (https://api -platform.com) - PullRequest
0 голосов
/ 29 ноября 2018

Учитывая следующий пример:

Я хочу реализовать конечную точку отчета о студенте с платформой API.

api / report / student

У меня есть следующеетаблицы:

Студент

id,
name,
address

Счет

id,
description,
amount,
status,
student_id

Я бы хотел работать с конечной точкой API, чтобы получить следующую информацию:

{
    data: [
       student_id: 1,
       student_name: john,
       outstanding_amount: 200 (Total of unpaid bill)
    ],
    [
       student_id: 2,
       student_name: mike,
       outstanding_amount: 300 (Total of unpaid bill)
    ]

}

Просто интересно, что было бы лучше написатьконечная точка API для отчета с платформой API (https://api -platform.com ).

Конечная точка отчета требует сортировки, объединения таблиц, разбивки на страницы и т. д.

Чтобыло бы наилучшей практикой для достижения этого с платформой API?Это то, что мы можем достичь с помощью GraphQL или нам нужно связать это с действием контроллера для этого?

Спасибо.

1 Ответ

0 голосов
/ 29 ноября 2018

Фактически, у вас есть все, что вам нужно на платформе API, при условии, что у вас установлено ядро.

СОРТИРОВКА

Для сортировки, если вы посмотрите наВ разделе Фильтры вы можете использовать фильтр под названием Фильтр заказов , который в основном представляет собой сортирующий фильтр.

==========

PAGINATION

Вам доступно множество функций, доступных при использовании Pagination .Вы можете контролировать количество элементов на странице или включить / отключить разбиение на страницы для определенного ресурса.

==========

СОЕДИНИТЕЛЬНЫЕ СТОЛЫ

Исходя из того, что я понимаю, вам нужно получить какой-то пользовательский набор результатов из базы данных для вашей конечной точки, например, выполнив JOIN.Создание Настраиваемых фильтров доктрины должно помочь вам достичь этого.

==========

Также, для большей гибкости, можно использовать Настраиваемое действие контроллера .Как сказал Дбруманн, я не думаю, что есть также официальные лучшие практики для этого.Вы просто используете доступные функции.Конечно, вы также можете использовать GraphQL, но, честно говоря, я никогда не использовал его.Из того, что я вижу, кажется, что это мощный инструмент.Это зависит от вас.

...