我想创建一个带有浮点列的表。
$table->float('TaxRate',5,5)->default(0.00000);
但是Mysql把这个当成DOUBLE了。
这是如何工作的?
这是因为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'
);
}