Phinx迁移 - 显式长度的整数列

时间:2016-05-17 15:03:17

标签: php mysql database-migration phinx

如果可以通过Phinx迁移addColumn()方法设置明确的整数列长度,请告诉我吗?

文档使用限制选项MysqlAdapter::INT_REGULAR,例如['limit' => MysqlAdapter::INT_SMALL, 'signed' => false],但它会自动设置列的长度,例如int(10)

但是如果我需要int(11)例如外键列,该怎么办?

THX。

1 个答案:

答案 0 :(得分:3)

据我所知,limit option MysqlAdapter::INT_REGULAR类似于Phinx中的预定义类型。但您也可以使用自己的limit变量。

以下是一个例子:

// using Phinx 0.5.4
public function change() {
  $table = $this->table('papers');
  $table->addColumn('user_id', 'integer', ['limit' => 2])
        ->addColumn('book_id', 'integer') // by default will be int(11)
        ->addColumn('bank_id', 'integer', ['limit' => 32])
        ->create();

}

MySQL描述结果:

+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| id      | int(11) | NO   | PRI | NULL    | auto_increment |
| user_id | int(2)  | NO   |     | NULL    |                |
| book_id | int(11) | NO   |     | NULL    |                |
| bank_id | int(32) | NO   |     | NULL    |                |
+---------+---------+------+-----+---------+----------------+

要获取更多信息,请查看getSqlType()getPhinxType() call size(array) No symbol "size" in current context.函数的source code