【问题标题】:Phinx migrations - explicit length of integer columnPhinx 迁移 - 整数列的显式长度
【发布时间】:2016-09-13 18:30:39
【问题描述】:
您能否告诉我是否可以通过 Phinx 迁移addColumn() 方法设置整数列的显式长度?
文档使用MysqlAdapter::INT_REGULAR 的限制选项,如['limit' => MysqlAdapter::INT_SMALL, 'signed' => false],但它会自动设置列的长度,例如int(10).
但是如果我需要int(11),例如外键列,我该怎么办?
谢谢。
【问题讨论】:
标签:
php
mysql
database-migration
phinx
【解决方案1】:
据我了解,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() 的source code 和getPhinxType() 的source code 函数。