Api 平台 属性 类型始终为 STRING

Api Platform property types are always STRING

尽管我在类型提示和 @var int 注释方面做出了努力,Api 平台对此 属性 的解释始终是 string

考虑这个 属性:


/**
 * @var int $geonameId The ID of a Geonames.org city/place/town
 *
 * @ORM\Column(type="bigint", options={"unsigned": true}, nullable=true)
 * @Assert\Type(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 时,出现以下错误:

The type of the "geonameId" attribute for class <Entity> must be one of "string" ("int" given).

我知道 @ApiProperty 注释可以自定义属性等,但我不想在已经使用类型提示 and/or 时不得不为了接受整数而冗长地定义类型@var 注释。

有没有人认为我正在做的/期望的有什么不对?提前致谢...

看起来 Doctrine 将 BIGINT 映射为字符串。

参考: https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/basic-mapping.html

bigint: Type that maps a database BIGINT to a PHP string.