Laravel 11 的升级说明说:
浮点列类型现在创建一个
等效列,没有总位数和位数(小数点后的位数),但具有可选的FLOAT
规范来确定存储大小为 4 字节单精度列或 8-字节双精度列。因此,您可以删除$precision
和$total
的参数,并根据数据库文档将可选的$places
指定为您所需的值:$precision
$table->float('amount', precision: 53);
但是,数据库文档没有提供任何解释
precision
参数可能代表什么或为什么它默认为 53。更改值会对结果列产生什么影响?
不打算自我回答,但我想检查一下MySQL的文档并得到了答案:
对于
,SQL 标准允许在括号中的关键字FLOAT
后面以位为单位指定精度(但不是指数范围),即FLOAT
。 MySQL 也支持这种可选的精度规范,但FLOAT(p)
中的精度值仅用于确定存储大小。 0 到 23 的精度会产生 4 字节单精度FLOAT(p)
列。 24 到 53 的精度会产生 8 字节双精度FLOAT
列。DOUBLE
所以我认为这意味着我的旧迁移与
$table->float('price', 6)
应该继续按预期工作。