首页 > 分享 > ThinkPHP5数据库迁移工具 migration

ThinkPHP5数据库迁移工具 migration

Migration文件作用

migration 文件的主要作用就是用来管理数据库的结构,其实它是一组SQL语句的抽象化,migration 文件可以创建表,删除表,增加字段,删除字段等等基本上所有的数据库操作,其实这就像你自己手动写SQL语句一样,只不过在 migration 中你不需要手动的写SQL语句,只需要按照它的规则语法调用。

migrate 命令介绍
​​migrate:breakpoint​​ 管理断点
​​migrate:create​​ 创建一个迁移文件
​​migrate:rollback​​ 回滚最后一个或特定的迁移
​​migrate:run​​ 迁移数据库
​​migrate:status​​ 显示迁移状态

1. Thinkphp5.1 使用 migration

thinkphp5 为开发者提供了一整套的 migration 解决方案,不过默认情况下 migration 是没有安装的,需要我们手动安装。将工作目录切换到tp5项目下,执行:

composer require topthink/think-migration v3.0.2

默认安装版本,更多版本地址:​ ​https://packagist.org/packages/topthink/think-migration​​

执行​​php think​​命令查看是否安装成功

2. create 命令 

语法格式:​​php think migrate:create TableName​​ 

​​TableName​​​ 格式:首字母大写的驼峰法。该命令是用来创建一个 migration 文件,比如这里我们创建一个 ​​Video​​ 的 migration 文件: 

php think migrate:create Video

 在项目的根目录下多了一个 database 目录,有一个migration文件夹,该文件夹就是用来存放 migration文件,打开可以看到我们刚才创建的 Video 的 migration 文件:

created ./database/migrations/202305060932127_video.php

文件格式命名规则:​​时间 + 随机数 + _ + 文件名​​

文件创建好之后,来看下它的内容:

<?php

use thinkmigrationMigrator;

use thinkmigrationdbColumn;

class Video extends Migrator

{

public function change()

{

}

}

这里我需要给我上面创建的 Video 文件增加字段

​​Video​​ 表结构如下

字段类型说明idint主键nicknamevarchar(16)视频名称emailvarchar(32)邮箱passwordvarchar64)密码

删除默认自带的 ​​change​​​ 方法,创建 ​​up()​​​ 方法和 ​​down()​​​ 方法。​​up()​​​ 方法是在执行 ​​run​​​ 命令执行的,​​down()​​​ 是在执行 ​​rollback​​ 命令执行的。

<?php

use thinkmigrationMigrator;

use thinkmigrationdbColumn;

class Video extends Migrator

{

public function up()

{

$table = $this->table('video');

$table->addColumn('name', 'string', ['limit' => 16, 'null' => false,'comment'=>'视频名称'])

->addColumn('email', 'string', ['limit' => 32, 'null' => false,'comment'=>'邮箱'])

->addColumn('password', 'string', ['limit' => 64, 'null' => false,'comment'=>'密码'])

->create();

}

public function down()

{

$this->dropTable('video');

}

}

这样,一个可以创建 video 表的 migration 文件就创建完毕了,接下来,来学习下一个命令。

3. migrate:run 命令 

migration 文件创建完毕,还需要执行 ​​run​​ 命令才可以修改数据库:

注意,执行此步骤之前请正确配置了 ​​config/database.php​​​ 。 在这里的数据库是有前缀的​​eb_​​

php think migrate:run

 执行成功之后,查看数据库,多了两个表​​eb_migrations​​​和​​eb_video​​

之前我定义了 migration 只指定了 ​​nickname​​​, ​​email​​​, ​​password​​​ 三个字段,但是执行 ​​run​​​ 命令创建的表中有四个字段,多了一个 ​​id​​​ 主键?这是 ​​thinkphp5​​​ 为我们默认添加的!小伙伴注意啦!如果你的主键字段名为 ​​id​​ 就不需要自己手动的指定了。 

4. migrate:status 命令 

说明:显示迁移状态

Status Migration ID Started Finished Migration Name

----------------------------------------------------------------------------------

up 20230503032741 2023-05-06 17:12:50 2023-05-06 17:12:50 Video

5. migrate:roolback 命令

说明:回滚最后一个或特定的迁移 

执行回滚操作

php think migrate:rollback

这时候查看数据库和表结构,数据库表已经被删除,不存在了

6. 新增表字段
  

对表进行二次操作,不能在同一个脚本中二次编辑,只能新建脚本。

下面给表​​eb_video​​增加新字段,重新生成表结构

php think migrate:create Video2

created ./database/migrations/202305060932127_video2.php

Video2 文件内容

<?php

use thinkmigrationMigrator;

class Video2 extends Migrator

{

public function up()

{

$table = $this->table('video');

$table->addColumn('upload_time', 'string', ['limit' => 11, 'null' => false,'comment'=>'上传时间'])

->addColumn('user_id', 'string', ['limit' => 11, 'null' => false,'comment'=>'上传用户ID'])

->save();

}

}

数据迁移

php think migrate:run

相关知识

总结出这套数据库迁移经验,我花了20年……
178个植物科学研究常用数据库和生物信息学工具汇总
使用 IBM Data Studio 管理数据库最佳实践1
基于残差网络迁移学习的花卉识别系统
干货 | 最新植物研究数据库及生信工具大全(2021版)值得收藏!
数据库分享
植物科学常用数据库大全
Sylius:如何扩展Taxon模型?
绿化迁移最佳时间
花数据库

网址: ThinkPHP5数据库迁移工具 migration https://m.huajiangbk.com/newsview893426.html

所属分类:花卉
上一篇: 个人文件转移工具 v2.0
下一篇: gtt到gal liq (US)