Колонка DECIMAL в миграциях Laravel
Для денег, цен и других точных
десятичных чисел не подходит
float - там возможны
ошибки округления. Используют
метод decimal:
<?php
$table->decimal('price', 8, 2);
?>
Первый параметр - имя поля.
Второй - общее число цифр,
третий - сколько из них после
запятой. В примере price
хранит число до 999999.99.
Пример миграции таблицы товаров:
<?php
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price', 8, 2);
$table->decimal('weight', 5, 2);
});
}
?>
Для цены в рублях часто хватает
decimal(8, 2). Для более
крупных сумм увеличивают первое
число - например, decimal(10, 2).
Добавьте в таблицу товаров
поле price типа
DECIMAL(8, 2).
Почему для цены лучше decimal,
а не float?