多个Laravel项目如何共用migrations详解
1. 什么是migration
在Laravel框架中,migration是数据库迁移的意思。使用migration可以让我们在开发的过程中轻松地修改数据库结构,仅需使用PHP代码定义新的或修改现有的表、列,并在需要的情况下填充表格。
使用Laravel的migration功能,可以让我们轻松的记录数据库变更的历史。也就是说,可以让我们在任何时候回到先前的状态,并且可以与代码库中先前提交的状态进行比较。
2. 多个项目如何共用migrations
多个Laravel项目最好通过共享的数据库迁移表来尝试共用迁移。简单讲,只需要在Laravel的默认数据库中使用名为"migrations"的表,记录所有需要迁移的迁移记录。
2.1 思路
多个项目数据库中均有migrations表,且其中记录的migration的名称均相同。
当需要对数据表结构进行修改时,编写migration文件并执行migrate命令进行修改数据库。
系统会通过查询migrations表判断之前的migration是否已经在当前环境下执行过。如果已经执行过,则不再执行此migration;如果没有执行过,则执行并在migrations故表中插入一条记录。
2.2 具体实现
对于两个不同的Laravel项目,其共用migration的实现步骤为:
将其中一个项目的migration目录复制到另一个项目中。
在两个项目的env文件中,分别定义不同的数据库连接信息。
在两个项目的迁移文件中可以直接引用对方项目的迁移文件中的表,比如:
Schema::create('other_project_table', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
.
这样,运行每个项目的迁移命令时,都可以创建对方项目的表,且不会因重复创建而报错。
2.3 注意点
在两个项目的migration目录下不允许存在同名的migration文件,因为每个migration文件都会在migrations表中创建一条记录,所以,如果存在同名文件,系统会同时创建两条记录,将导致migrations表中记录的顺序异常。
因此,两个项目在合并时,需要将其中一个项目的migration目录中的文件重命名。
3. 总结
migration 是 Laravel 提供的一个非常有用的功能。多个 Laravel 项目共用 migration 非常方便。只需在每个项目的数据库中使用名为"migrations"的表,并将每个项目的迁移文件保存在对应的目录下,就可以通过运行migrate命令轻松地修改数据库结构了。