Освоение десятичной точности в миграции Laravel: методы и примеры кода

В Laravel управление десятичной точностью имеет важное значение для обеспечения точных вычислений и согласованного хранения данных. В этой статье блога мы рассмотрим несколько методов и предоставим примеры кода, которые помогут вам эффективно обрабатывать десятичную точность при миграции Laravel.

Метод 1: использование типа столбца decimal
Тип столбца decimalв Laravel позволяет указать точность и масштаб десятичного значения. Вот пример миграции, при которой создается таблица с десятичным столбцом:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('products');
    }
}

В приведенном выше примере столбец priceбудет хранить десятичные значения с точностью 8 и масштабом 2.

Метод 2: использование операторов необработанного SQL
Если вам нужна большая гибкость, вы можете выполнять операторы необработанного SQL во время миграции. Вот пример создания таблицы со столбцом с плавающей запятой с помощью необработанного оператора SQL:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
class CreateOrdersTable extends Migration
{
    public function up()
    {
        DB::statement('CREATE TABLE orders (
            id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            total_amount FLOAT(10, 2)
        )');
    }
    public function down()
    {
        DB::statement('DROP TABLE IF EXISTS orders');
    }
}

В приведенном выше примере столбец total_amountбудет хранить значения с плавающей запятой с точностью 10 и масштабом 2.

Метод 3: изменение точности столбцов в существующих таблицах
Если у вас уже есть таблица и вам необходимо изменить точность существующего десятичного столбца, вы можете использовать метод change. Вот пример:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ModifyProductsTable extends Migration
{
    public function up()
    {
        Schema::table('products', function (Blueprint $table) {
            $table->decimal('price', 10, 4)->change();
        });
    }
    public function down()
    {
        Schema::table('products', function (Blueprint $table) {
            $table->decimal('price', 8, 2)->change();
        });
    }
}

В приведенном выше примере столбец priceв таблице productsбудет изменен, чтобы иметь точность 10 и масштаб 4.

Управление десятичной точностью при миграции Laravel имеет решающее значение для точного хранения десятичных значений и управления ими. В этой статье мы рассмотрели три метода: использование типа столбца decimal, выполнение необработанных операторов SQL и изменение точности столбцов в существующих таблицах. Применяя эти методы в своих проектах Laravel, вы можете обеспечить целостность данных и точные расчеты.