API не возвращает автоматически сгенерированный идентификатор - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над Symfony API Platform, чтобы что-то добавлять и получать.Таблица имеет два поля id и title.Но когда я запускаю запрос GET, API возвращает заголовок только без идентификатора.

Как вернуть идентификатор тоже?

Моя аннотация: -

 * @ORM\Table(
*      name="school",
* @ApiResource(
*     attributes={
*         "order"={"title": "ASC"},
*         "normalization_context"={"groups"={"school.read"}, 
"enable_max_depth"=true},
*     },
*     itemOperations={
*         "get",
*         "put"
*     },
*     collectionOperations={
*          "get"={
*              "normalization_context"={
*                  "groups"={"school.read"}
*              }
*          }
*     },
*     normalizationContext={
*          "groups"={"school.read"}
*     },
*     denormalizationContext={
*          "groups"={"school.write"}
*     }
* )
* @ORM\Entity(repositoryClass="Eqsgroup\Repository\SchoolRepository")
* @UniqueEntity(
*      "title",
*      repositoryMethod="findByUniqueCriteria",
*      message="School already exists."
* )
*/

ЭтоКласс сущности

class School 
 {

/**
 * @var string the id of this School
 *
 * @ORM\Id
 * @ORM\Column(type="guid", unique=true)
 * @ORM\GeneratedValue(strategy="CUSTOM")
 * @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")
 * @Groups({"school.read, school.write"})
 */
private $id;

/**
 * @var string The title of the school
 *
 * @ORM\Column(type="string", length=255)
 * @Assert\NotNull(message="school should not be empty")
 * @Assert\NotBlank(message="school should not be empty")
 * @Assert\Length(
 *      min = 1,
 *      max = 250,
 *      minMessage = "length.min,{{ limit }}",
 *      maxMessage = "length.max,{{ limit }}"
 * )
 * @Groups({"school.read", "school.write"})
 */
private $title;

public function __construct(){ }

public function getId(): ?string
{
    return $this->id;
}

public function getTitle(): ?string
{
    return $this->title;
}

public function setTitle(string $title): self
{
    $this->title = $title;

    return $this;
}

Это вывод, который в настоящее время получает:

[
{
 "title": "Test"
},
{
 "title": "Test2"
},

]

Ожидаемый вывод будет включать автоматически сгенерированный вместе с заголовком.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Вы настроили, какие атрибуты вы хотите выставить?

Если нет, настройте его в yaml вашей сущности:

# I don't know the path to your entity, just modify what you need to
XXXX\XXXX\XXXX\XXXX\School:
    exclusion_policy: ALL
    properties:
        id:
            expose: true
        title:
            expose: true
1 голос
/ 19 июня 2019

Добавьте @Groups, чтобы Apli-Platform могла читать каждое поле, которое вы хотите, например:

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 * @Groups({"school.read", "school.write"})
 */
private $id;

Просмотрите документацию здесь: https://api -platform.com / docs/ ядро ​​/ сериализация / #-сериализация-контекстные группы-и-отношения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...