РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
170 of 258 menu

Параметр scale атрибута Column

Параметр scale атрибута Column указывает, сколько знаков после запятой будет храниться в десятичном поле базы данных. Он работает в паре с параметром precision, который задаёт общее количество цифр в числе. Чем больше scale, тем точнее значение дробной части. Параметр актуален для типов decimal и float.

Синтаксис

#[Column(type: 'decimal', precision: precision, scale: scale)]

Пример

Давайте создадим сущность Product с полем price типа decimal и точностью два знака после запятой:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] class Product { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private ?int $id = null; #[ORMColumn(type: 'decimal', 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 будет иметь тип DECIMAL(10,2). Это значит, что всего в числе может быть 10 цифр, из которых 2 - после запятой.

Пример

Давайте сохраним товар и посмотрим, как округляется значение:

<?php namespace AppController; use AppEntityProduct; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ProductController extends AbstractController { public function create(EntityManagerInterface $em): Response { $product = new Product(); $product->setPrice('123.456789'); $em->persist($product); $em->flush(); return new Response($product->getPrice()); } } ?>

Результат выполнения кода:

"123.46"

Пример

Давайте изменим scale на четыре и сравним результат:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] class Product { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private ?int $id = null; #[ORMColumn(type: 'decimal', precision: 10, scale: 4)] 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; } } ?>

Теперь колонка имеет тип DECIMAL(10,4). Результат выполнения кода:

"123.4568"

Смотрите также

  • поле decimal,
    для которого чаще всего задают scale
  • параметр precision,
    который задаёт общее число цифр
  • поле float,
    которое также поддерживает scale
  • атрибут Column,
    которому принадлежит этот параметр
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить