phalcon数据迁移到回滚实现
程序员文章站
2022-07-13 10:29:41
...
先安装phalcon/phalcon-devtools
有多种方法,
composer是简单的一种。
composer require "phalcon/devtools:~3.4" --dev
然后
.vendor/bin/phalcon
根据已有的 表建立迁移文件
.vendor/bin/phalcon migration generate
运行已有的迁移文件
.vendor/bin/phalcon migration run
回滚到某个版本
.vendor/bin/phalcon migration run --version=1.0.3
注意事项
migrations目录下,
所有的类名必须都不一样
为什么不使用phalcon本身的迁移类,是因为
它的列和表都不能加注释。
所以我决定使用sql原生的ddl语句。
增加列定义
* // Column definition
* $column = new Column(
* "id",
* [
* "type" => Column::TYPE_INTEGER,
* "size" => 10,
* "unsigned" => true,
* "notNull" => true,
* "autoIncrement" => true,
* "first" => true,
* ]
* );
*
* // Add column to existing table
* $connection->addColumn("robots", null, $column);
完整表定义
$str="CREATE TABLE `table123` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '你好主键',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='你好表'";
self::getConnection()->query($str);
删除列定义,删除表定义,删除索引定义
self::getConnection()->dropColumn('products2','invo','active2');
有多种方法,
composer是简单的一种。
composer require "phalcon/devtools:~3.4" --dev
然后
.vendor/bin/phalcon
根据已有的 表建立迁移文件
.vendor/bin/phalcon migration generate
运行已有的迁移文件
.vendor/bin/phalcon migration run
回滚到某个版本
.vendor/bin/phalcon migration run --version=1.0.3
注意事项
migrations目录下,
所有的类名必须都不一样
为什么不使用phalcon本身的迁移类,是因为
它的列和表都不能加注释。
所以我决定使用sql原生的ddl语句。
增加列定义
* // Column definition
* $column = new Column(
* "id",
* [
* "type" => Column::TYPE_INTEGER,
* "size" => 10,
* "unsigned" => true,
* "notNull" => true,
* "autoIncrement" => true,
* "first" => true,
* ]
* );
*
* // Add column to existing table
* $connection->addColumn("robots", null, $column);
完整表定义
$str="CREATE TABLE `table123` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '你好主键',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='你好表'";
self::getConnection()->query($str);
删除列定义,删除表定义,删除索引定义
self::getConnection()->dropColumn('products2','invo','active2');