Tp6数据库迁移

Author Avatar
yyq 2021-07-15 10:13:30
  • 二维码

Tp6数据库迁移

        tp6官方文档上的数据库迁移操作描述简单,操作后记录下相关内容:


        NO1:安装数据库迁移扩展包,执行命令:php require topthink/think-migration


        NO2:创建迁移文件,文件名首字母需大写,使用大驼峰写法,执行命令:php think migrate:create MysqlTest ,执行后会在项目根目录生成文件夹database,文件夹下有生成的如20210715004947_mysql_test.php命名的类库操作文件


        NO3:打开文件,可以看到有一个默认的change()方法,该方法内可以编写创建表及相关字段的创建,示例方法如下:

            public function change()

            {

                    $table  =  $this->table('testsql',array('engine'=>'MyISAM'));

                    $table->addColumn('username', 'string',array('limit'  =>  15,'default'=>'','comment'=>'用户名,登陆使用'))

                    ->addColumn('password', 'string',array('limit'  =>  32,'default'=>md5('123456'),'comment'=>'用户密码')) 

                    ->addColumn('login_status', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'登陆状态'))

                    ->addColumn('login_code', 'string',array('limit'  =>  32,'default'=>0,'comment'=>'排他性登陆标识'))

                    ->addColumn('last_login_ip', 'integer',array('limit'  =>  11,'default'=>0,'comment'=>'最后登录IP'))

                    ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登录时间'))

                    ->addColumn('is_delete', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'删除状态,1已删除'))

                    //->addColumn('created_at', 'integer',array('limit'  =>  10,'default'=>0,'comment'=>'创建时间'))

                    //->addColumn('updated_at', 'integer',array('limit'  =>  10,'default'=>0,'comment'=>'更新时间'))

                    ->addIndex(array('username'), array('unique'  =>  true))

                    ->create();

            }

    

        NO4:执行迁移工具命令:php think migrate:run ,将会在数据库内创建表 xxx_testsql及方法内指定的字段,xxx_为表前缀


        NO5:如果我们需要往表内新增或者删除字段,需要执行回滚的操作,指令为:php think migrate:rollback ,之后修改NO3内的change,如打开注释的两个时间字段,之后再重新执行命令: php think migrate:run


        NO6:官方提到了两个方法up(),down(),一个是升级一个是降级,使用的时候需要注释掉方法change执行run方法时对应的就是up(),执行rollback对应的方法就是down,所以示例如下:   

            public function up()

            {

                    $table  =  $this->table('testsql',array('engine'=>'MyISAM'));

                    $table->addColumn('username', 'string',array('limit'  =>  15,'default'=>'','comment'=>'用户名,登陆使用'))

                    ->addColumn('password', 'string',array('limit'  =>  32,'default'=>md5('123456'),'comment'=>'用户密码')) 

                    ->addColumn('login_status', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'登陆状态'))

                    ->addColumn('login_code', 'string',array('limit'  =>  32,'default'=>0,'comment'=>'排他性登陆标识'))

                    ->addColumn('last_login_ip', 'integer',array('limit'  =>  11,'default'=>0,'comment'=>'最后登录IP'))

                    ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登录时间'))

                    ->addColumn('is_delete', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'删除状态,1已删除'))

                    ->addIndex(array('username'), array('unique'  =>  true))

                    ->create();

            }

    

            public function down(){

                    $this->table('testsql')->drop();

            }


上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语