Поле number
Поле number относится к типу полей Doctrine
и создаёт в базе данных колонку для хранения чисел.
Оно используется, когда нужно хранить целые или
дробные числа произвольной точности, например цены,
количества или рейтинги. Первым параметром передаётся
имя поля, вторым - массив опций. Среди опций чаще
всего указывают precision и scale,
которые задают общее число цифр и число цифр после
запятой.
Синтаксис
#[ORM\Column(type: 'number', precision: precision, scale: scale)]
private ?string $field = null;
Пример
Давайте создадим сущность Product с полем
price типа number:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORM\Entity]
class Product
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'number', precision: 10, scale: 2)]
private ?string $price = null;
public function getId(): ?int
{
return $this->id;
}
public function getPrice(): ?string
{
return $this->price;
}
public function setPrice(string $price): self
{
$this->price = $price;
return $this;
}
}
?>
После выполнения команды миграции в базе данных
появится колонка price типа NUMERIC(10, 2).
Пример
Давайте запишем значение в поле и выведем его:
<?php
namespace AppController;
use AppEntityProduct;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ProductController extends AbstractController
{
#[Route('/product', name: 'product_create')]
public function create(EntityManagerInterface $em): Response
{
$product = new Product();
$product->setPrice('123.45');
$em->persist($product);
$em->flush();
return new Response($product->getPrice());
}
}
?>
Результат выполнения кода:
"123.45"
Пример
Давайте создадим поле number без дробной
части, только для целых чисел:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'number', precision: 10, scale: 0)]
private ?string $views = null;
public function getId(): ?int
{
return $this->id;
}
public function getViews(): ?string
{
return $this->views;
}
public function setViews(string $views): self
{
$this->views = $views;
return $this;
}
}
?>
В этом случае колонка будет создана как
NUMERIC(10, 0) и сможет хранить только
целые значения.