Я думаю, что ваша проблема не в Api-Platform, а в неправильном понимании десятичного типа.
С Doctrine, Десятичный тип - это строка PHP , а не двойной, который преобразуется в десятичную в базе данных.
Значения, извлеченные из базы данных, всегда преобразуются в строковый тип PHP или ноль, если данные отсутствуют.
Вам следует рассмотреть возможность использования Symfony maker bundle при создании ваших сущностей. Например, когда я создаю объект Test с десятичным свойством foo, сгенерированный код будет иметь вид:
$ symfony console make:entity Test
Я ввел foo для имени свойства, десятичный для типа и 5, затем 2 для числа
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\TestRepository")
*/
class Test
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="decimal", precision=5, scale=2)
*/
private $foo;
public function getId(): ?int
{
return $this->id;
}
public function getFoo(): ?string
{
return $this->foo;
}
public function setFoo(string $foo): self
{
$this->foo = $foo;
return $this;
}
}
Как видите, foo является десятичным числом, но метод получения и установки должен возвращать и принимать строковые значения.
Таким образом, ваш контекст чванства должен быть :
/**
* @ApiProperty(
* attributes={
* "swagger_context"={
* "type"="string",
* "example"="15.00",
* "description"="A string representing a 6.2 decimal"
* }})
* @Assert\Type("numeric")
* @ORM\Column(type="decimal", precision=2, nullable=false, length=6, options={"default":0})
* @var string
*/
public $flatFee = 0;