Типы свойств платформы Api всегда являются СТРОКОВЫМИ

#symfony #doctrine-orm #api-platform.com

#symfony #doctrine-orm #api-platform.com

Вопрос:

Несмотря на мои усилия с указаниями типов и @var int аннотациями, интерпретация этого свойства платформой Api всегда string .

Рассмотрим это свойство:

 
/**
 * @var int $geonameId The ID of a Geonames.org city/place/town
 *
 * @ORMColumn(type="bigint", options={"unsigned": true}, nullable=true)
 * @AssertType(type="int", message="Geoname id must be an integer")
 */
protected $geonameId;

public function getGeonameId(): ?int
{
    return $this->geonameId;
}

public function setGeonameId(int $geonameId = null): self
{
    $this->geonameId = $geonameId;
    return $this;
}

  

Я получаю следующую схему из платформы Api:

 geonameId  string
           nullable:  true
           The ID of a Geonames.org city/place/town
  

И когда я пытаюсь отправить "geonameId": 123456 , я получаю следующую ошибку:

Тип атрибута «geonameId» для класса <Entity> должен быть одним из «string» (задано «int»).

Я знаю о @ApiProperty аннотации для настройки атрибутов и т.д. Но я не хочу подробно определять тип только для принятия целого числа, когда я уже использовал подсказку типа и / или аннотацию @var.

Кто-нибудь видит что-то неправильное в том, что я делаю / ожидаю? Заранее спасибо…

Комментарии:

1. doctrine-project.org/projects/doctrine-orm/en/2.7/reference/… — Похоже, Doctrine отображает BIGINT в виде строки. bigint: Type that maps a database BIGINT to a PHP string. Не уверен, что вы могли бы попробовать использовать integer вместо этого? Есть о чем подумать..

2. Спасибо @Bossman, это сработало, пожалуйста, ответьте вместо комментария, и я отмечу как правильный. Не могу поверить в это различие, и это имеет смысл, почему, я просто никогда не думал, что это будет виновником 🙂

Ответ №1:

Похоже, Doctrine отображает BIGINT в виде строки.

Ссылка: https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/basic-mapping.html

bigint: тип, который сопоставляет BIGINT базы данных со строкой PHP.