Skip to content

Allows Laravel migrations to create FLOAT columns in MySQL

License

Notifications You must be signed in to change notification settings

fisharebest/laravel-floats

Repository files navigation

License: MIT Latest Stable Version Build Status Coverage Status Scrutinizer Code Quality

laravel-floats

This package allows database migrations in Laravel 5, Laravel 6 and Laravel 7 to create FLOAT columns in MySQL.

Huh? You mean that Laravel does not support floating point columns?

Sadly no. It only supports double-precision floating point columns. If you want single-precision floating point, you need to use DB::raw().

This is despite the Laravel documentation at https://laravel.com/docs/5.8/migrations which states:

$table->float('amount', 8, 2); FLOAT equivalent column with a precision (total digits) and scale (decimal digits).

$table->double('amount', 8, 2); DOUBLE equivalent column with a precision (total digits) and scale (decimal digits).

You can read all about it at laravel/framework#3151 and many other issues.

In your migration Laravel 5.0 - 7.0 With this package
$table->float('col'); DOUBLE(8,2) FLOAT
$table->float('col', 0); DOUBLE FLOAT
$table->float('col', 5); DOUBLE(5,2) FLOAT
$table->float('col', 5, 3); DOUBLE(5,3) FLOAT(5,3)
$table->double('col'); DOUBLE DOUBLE
$table->double('col', 0); DOUBLE DOUBLE
$table->double('col', 5); DOUBLE DOUBLE
$table->double('col', 5, 3); DOUBLE(5,3) DOUBLE(5,3)

Installation

composer require fisharebest/laravel-floats

Package discovery takes care of everything on Laravel 5.5 and later. If you're using Laravel 5.4 or earlier, you'll need to replace an alias in config/app.php.

'aliases' => [
    ...
    'Schema' => \Fisharebest\LaravelFloats\Schema::class,
    ....
]

NOTE: this assumes you are using Laravel to autoload your facades using the aliases.

If you explicitly import Laravel's schema builder using use Illuminate\Support\Facades\Schema; then you will need to change this to use Fisharebest\LaravelFloats\Schema;.

How does this package work?

We extend the MySQL Grammar, modify the blueprint for float(), and then bind the updated grammar back into the IoC container.

About

Allows Laravel migrations to create FLOAT columns in MySQL

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages