Agregar columna tipo decimal en Laravel

Agregar columna tipo decimal en Laravel. En todo proyecto Laravel siempre nos chocaremos con este tema y son las monedas, precios y es importante declarar este campo en decimal para que la información sea precisa.
¿Como agregar columna tipo decimal en Laravel?
Tenemos en agregarlo en nuestras migración cuando creamos los campos de la tabla. Y solo debemos de declararlo de la siguiente manera.
$table->decimal('price', 13,2)->default(0)->nullable();
Crear una migración y comprender la estructura
Para generar una migración, debe ejecutar un comando. En este caso vamos a crear una tabla llamado productos de ejemplo.
php artisan make:migration create_products_table
Al ejecutar el anterior comando generara lo siguiente:
- Creara un archivo en la carpeta
database\migrations
. - El archivo consta de una nueva clase que extiende la clase de migración de LARAVEL.
- La nueva clase consta de dos funciones principales:
up()
ydown()
. - La función
up()
contiene toda la información sobre la migración del archivo.
public function up()
{
Schema::create('products', function (Blueprint $table)
{
$table->id();
$table->string('name');
$table->string('description');
$table->decimal('price', 10,2); // Sustituye por otro decimal de tu preferencia
$table->boolean('status');
$table->timestamps();
});
}
Crear columna decimal en Laravel
Si observamos el código anterior hemos declarado la columna precio en decimal usando la siguiente linea de código.
$table->decimal('price', 10,2); // Sustituye por otro decimal de tu preferencia
Luego, una vez terminado de declarar la columna decimal y creado los demás campos de la tabla podemos ejecutar la siguiente linea de comando para que Laravel cree la tabla en la base de datos.
php artisan migrate
¿Cómo agregar una columna decimal a una tabla existente en la migración?
Si ya tenemos la table creada y deseamos crear una nueva columna podemos agregarlo haciendo los siguientes pasos.
Paso 01: identificar la funcion up()
Cuando creamos una migración en laravel, agregamos campos a esa migración en la función
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name')->nullable();
$table->timestamps();
});
}
Paso 02: Identificar la Función down()
Aquí, podemos hacer modificaciones a la tabla y a continuación veremos un ejemplo.
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('products');
Schema::table('reviews', function (Blueprint $table) {
$table->decimal('price', 5,2)->change();
});
}
Una vez editado podremos ejecutar el siguiente comando
php artisan migrate:rollback
Caso contrario usar el comando
php artisan migrate:fresh --seed
Nota: No es recomendable usar en modo de producción, siempre ejecuten en modo local.