Para manejar cantidades en euros, es esencial elegir un tipo de dato que garantice precisión. En bases de datos relacionales, el tipo DECIMAL es la mejor opción para representar valores monetarios.
Crea o modifica una migración para tu tabla utilizando el método decimal
. Este método acepta dos parámetros:
1. La precisión total (cantidad máxima de dígitos).
2. La escala (número de dígitos después del punto decimal).
public function up()
{
Schema::create('productos', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->decimal('precio', 8, 2); // Hasta 999,999.99 euros
$table->timestamps();
});
}
En este caso:
8
indica que el número total puede tener hasta 8 dígitos.
2
permite 2 dígitos después del punto decimal (por ejemplo, 99999.99
).
Asegúrate de configurar correctamente las operaciones matemáticas en tu aplicación para evitar errores de redondeo. Laravel tiene soporte para el paquete MoneyPHP, útil para manejar divisas.
1. Guardar un precio en euros:
$producto = new Producto();
$producto->nombre = 'Producto A';
$producto->precio = 19.99; // Precio en euros
$producto->save();
2. Mostrar el precio en vistas:
Usa la función number_format
para asegurar un formato estándar:
{{ number_format($producto->precio, 2, ',', '.') }} €
3. Operaciones aritméticas en queries:
$total = Producto::sum('precio'); // Suma total de los precios
Consulta la documentación oficial de Laravel sobre migraciones para más detalles sobre cómo manejar tipos de datos. También puedes explorar el uso de paquetes externos como MoneyPHP para cálculos avanzados.
Jorge García
Fullstack developer