06.30 「PHP编程」Phinx——数据库迁移利器

「PHP编程」Phinx——数据库迁移利器

前言

通常,我们创建、修改MySQL数据表结构,都是使用PHPMyAdmin或者Navicat等数据库管理工具来操作。这在开发者只有一个的时候没有什么问题,但是如果团队中有多个开发者,这样可能就会有问题了。这时候,我们可能就需要导出表结构,然后传给团队中其他人,让他们再把数据表结构导入他们的数据库。这样一来,不仅增加了操作的复杂度,而且增加了出现问题的可能性。比如,如果某些表存在旧数据可能就会导致其字段类型不能修改,或者从MySQL向Oracle进行数据迁移时,数据不完整等。

这些问题的出现,其主要原因是我们直接使用SQL语句操作数据库,但没有遵循统一标准。那有没有一种方法,可以不直接使用SQL语句操作数据库,却能达到迁移数据的目的呢?

毋庸置疑,肯定是有的。PHP框架Laravel中就有使用PHP操作进行数据迁移的做法。我最近使用了一下,非常方便简洁。如下:

「PHP编程」Phinx——数据库迁移利器

以上图中操作就是一个创建 flights 表的简单示例,其中up方法是创建数据表,down方法是删除数据表。正式部署时,只要执行如下命令就可以在正式环境创建相同的数据表fligths了。

「PHP编程」Phinx——数据库迁移利器

很简单有木有?

不过遗憾的是,Laravel的这一套数据迁移操作,内嵌在其框架里面。如果你不是使用Laravel框架,要想使用它还有点麻烦。俗话说方法总比困难多。最近我又发现一个可以进行类似数据迁移操作的库——Phinx。这个PHP库允许开发者以一种清晰、简洁的方式来修改和操作数据库。它提供了一个强大的API,你无需手工编写SQL,使用PHP代码来创建代码进行迁移就可以了。Phinx代码迁移可以移植于不同数据库系统,如MySQL、Oracle、SQL Server等,Phinx会对已经进行过的代码迁移进行跟踪,这样你就可以少担心数据库的状态,而专注于开发更好的软件。

安装使用

Phinx使用composer进行管理,要求PHP版本在5.4以上。如果你已经安装了composer,可以执行以下命令来安装phinx:

php composer.phar require robmorgan/phinx

安装完毕后,执行如下命令,进行初始化:

vendor\\bin\\phinx init

初始化完毕后,在项目根目录会生成一个phinx.yml文件。这个phinx.yml文件是phinx配置文件,里面记录了数据库的相关配置,使用时要将里面的参数改成自己的参数。

「PHP编程」Phinx——数据库迁移利器

设置好配置文件后,我们开始创建我们的第一个数据库迁移,如下:

vendor\\bin\\phinx create MyNewMigration

执行了此命令后,在db\\migrations目录会生成一个数据库迁移文件,如下:

「PHP编程」Phinx——数据库迁移利器

其中,会自动生成一个update方法。方法update表示修改表,方法up表示创建新表,方法down表示删除表。

如果你的迁移文件创建完毕,你可以执行如下命令进行数据迁移:

vendor\\bin\\phinx migrate -e development

其中,-e development表示指定运行环境为开发环境,与phinx.yml配置文件一一对应。

执行以上命令后,就可以使用PHP进行数据迁移了。

这只是一个简单的使用实例,其实phinx可以做的还有很多,如设置断点、数据回滚等,这里我就不进行详解了,大家如果想看更多内容,可以访问如下官方链接:

http://docs.phinx.org/en/latest/intro.html


分享到:


相關文章: