CakePHP迁移 - 如何指定比例和精度

时间:2016-10-06 19:28:31

标签: cakephp migration cakephp-2.7

我正在使用迁移插件和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'=> '十进制'但同样发生了。迁移插件可能不支持此功能,但我只是想知道是否有人确切知道发生了什么。

2 个答案:

答案 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

我希望这对某人有用。