fisharebest / laravel-floats
Floating point support for Laravel migrations
Installs: 10 911
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 3
Forks: 2
Open Issues: 2
Requires
- php: ~5.6|~7.0
- illuminate/database: ~5.0|~6.0|~7.0|~8.0
Requires (Dev)
- php-coveralls/php-coveralls: ~2.0
- phpunit/phpunit: ~5.0|~8.0
README
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.
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.