#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.