本文主要是介绍Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
熟悉laravel的同学都知道,laravel的数据迁移和数据填充,能够随着源代码的改变而同步记录同步数据库结构的变化,也就是对数据库的版本控制。
但是,有的项目开发之初,数据库结构的变化会比较频繁,每个都手动创建migrate文件的,工作量会比较大,或者老项目已有数据库,如果手动为所有的已存在的表去创建迁移文件的会非常耗时,还容易出错。
这里,就给大家分享一下如何逆向生成迁移文件。
本文基于Laravel5.5,其他版本大同小异。
安装
轮子早就有人造好啦,xethron/migrations-generator,只需要composer安装一下
composer require --dev "xethron/migrations-generator"
配置
在 config/app.php
中添加相应的服务提供者
// 省略之前内容
'providers' => [// 省略之前内容Way\Generators\GeneratorsServiceProvider::class,Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
],
// 省略之后内容
注册服务,在app/Providers/AppServiceProvider.php
中register()方法里添加
// 仅在开发环境中使用
if ($this->app->environment() !== 'production') {$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
生成迁移文件
在项目根目录运行:
php artisan migrate:generate
接下来会让你确认
Using connection: mysqlGenerating migrations for: articles, password_resets, students, students_10000, usersDo you want to log these migrations in the migrations table? [Y/n] :> YNext Batch Number is: 2. We recommend using Batch Number 0 so that it becomes the "first" migration [Default: 0] :> 0Setting up Tables and Index Migrations
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_articles_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_password_resets_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_students_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_students_10000_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_users_table.phpSetting up Foreign Key MigrationsFinished!
这样就将已有的数据表,批量生成迁移文件啦,可以在database/migrations目录里查看是否生成了迁移文件呢。
后续的开发可以是Migrations维护数据结构了。
你也可以指定某张表生成迁移文件
php artisan migrate:generate table1,table2,table3
也可以反向忽略某些表
php artisan migrate:generate --ignore="table3,table4,table5"
更多用法,请使用help查看
php artisan help migrate:generate
这篇关于Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!