Symfony / API-платформа Исключить мета-поля - PullRequest
0 голосов
/ 29 января 2020

Используя Symfony 4, Doctrine и API Platform, я настроил простой API для получения заданий, а также службы и вспомогательных служб, связанных с каждым заданием. Задания, службы и подуслуги являются их собственными сущностями - basi c getter and setters - и при запросе возвращается следующее.

{
    "@context": "/api/contexts/Job",
    "@id": "/api/jobs/6",
    "@type": "Job",
    "jobNo": "123789",
    "created": "2020-01-29T09:51:29+01:00",
    "service": {
        "@id": "/api/services/1",
        "@type": "Service",
        "code": "MOVE",
        "name": "Move"
    },
    "subService": {
        "@id": "/api/sub_services/2",
        "@type": "SubService",
        "code": "EXP",
        "name": "Export"
    }
}

Я использую аннотации @Groups, чтобы определить, какие поля возвращаются субресурсы, но как исключить мета-поля @id, @type, которые не нужны.

В идеале, я бы хотел получить следующее:

{
    "@context": "/api/contexts/Job",
    "@id": "/api/jobs/6",
    "@type": "Job",
    "jobNo": "123789",
    "created": "2020-01-29T09:51:29+01:00",
    "service": {
        "code": "MOVE",
        "name": "Move"
    },
    "subService": {
        "code": "EXP",
        "name": "Export"
    }
}

При наличии мета-полей на самом деле это не приносит никакого вреда, который я им не пользуюсь при вызове записи о работе, так как все, что мне нужно знать, это код и имя каждого.

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

...