Laravel Изменение поля миграции Float на Double

Я хочу создать таблицу со столбцом с плавающей запятой.

$table->float('TaxRate',5,5)->default(0.00000);

Но Mysql воспринимает это как DOUBLE.

введите описание изображения здесь

Как это работает?


person Jishad    schedule 19.11.2016    source источник


Ответы (1)


Это потому, что Illuminate\Database\Schema\Grammars\MySqlGrammar преобразует float в double. Я не знаю, почему они заставляют использовать double.

Переопределить MySqlGrammar будет проблематично, так как вам придется переопределить больше классов.

Вы можете использовать необработанный запрос mysql для создания таблицы, как показано ниже.

public function up() {
    DB::unprepared('CREATE TABLE `temp`(
        `id` INT NOT NULL AUTO_INCREMENT,
        `tax_rate` FLOAT(5, 5) NOT NULL DEFAULT 0.00000,
        ...
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8'
    );
}
person Saumini Navaratnam    schedule 21.11.2016