我正在使用迁移插件和Postgresql DB运行CakePhp 2.7。 创建“数字”类型的字段并指定长度15,4(比例15,精度4或任何长度)实际上不会创建具有该精度和/或比例的字段。
...
'license_fee' => array(
'type' => 'number',
'null' => true,
'length' => '15,6',
'default' => 0
),
...
使用正确的类型(数字)创建字段,但这里没有缩放/精度,是创建字段的Postgres描述。
license_fee | numeric | default 0
我期待看到的是这个
license_fee | numeric(15,6) | default 0
我也尝试过使用'type'=> '十进制'但同样发生了。迁移插件可能不支持此功能,但我只是想知道是否有人确切知道发生了什么。
答案 0 :(得分:4)
在此处找到:http://docs.phinx.org/en/latest/migrations.html
为了创建:decimal(9,3)
$table->addColumn('distance', 'decimal', [
'default' => null,
'null' => false,
'precision'=>9,
'scale'=>3
]);
答案 1 :(得分:1)
经过进一步调查并得到Cake Development Corp.的一些帮助。事实证明,正确指定精度和规模是通过使用“限制”而不是像我试图的“长度”。所以它应该是这样的:
'license_fee' => array(
'type' => 'number',
'null' => true,
'limit' => '15,6', //this is where I was wrong by using length
'default' => 0
),
如果使用'type'=>这也会有效'decimal'实际上是相同的数据类型。最终结果如预期:
license_fee | numeric(15,6) | default 0
我希望这对某人有用。