Laravel扩展: DbExporter 逆向生成Migration 和 db:seed
有时候我们需要工作在已有的数据库上, 或者因为项目需求, 需要对数据进行导出, 并要求方便导入, DbExporter 扩展包可以帮助你.
什么是 Migration 和 Seed
migrate (迁移) 功能: 是一种数据库的版本控制。可以让团队在修改数据库结构的同时,保持彼此的进度一致。迁移通常会和结构生成器一起使用,可以简单的管理数据库结构。
db:seed: Laravel 可以简单的使用 seed 类填充测试数据到数据库。
逆向 Migration 和 Seed?
从已经存在的数据库里面导出数据库结构的 Migrate 文件, 供 php artisan migrate 命令执行;
从已有的数据库里面导出数据为 Seed 文件, 供 php artisan db:seed 命令执行.
安装
安装依赖:
composer require "nwidart/db-exporter:1.*"
添加 Service Providers 到 app/config/app.php:
'Nwidart\DbExporter\DbExportHandlerServiceProvider'
(可选的) 发布配置信息:
php artisan config:publish nwidart/db-exporter
使用
安装完成后, 会发现 php artisan 下多了三个命令:
类似的扩展包还有:
上面的扩展在laravel5.5+上不能用。推荐用下面这个:
https://github.com/Xethron/migrations-generator
Laravel Migrations Generator
Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads License
Generate Laravel Migrations from an existing database, including indexes and foreign keys!
Upgrading to Laravel 5.4
Please note that the Laravel 4 Generator edits have been moved to https://github.com/xethron/Laravel-4-Generators.git to update compatibility.
Laravel 5 installation
The recommended way to install this is through composer:
执行composer命令安装:
composer require --dev "xethron/migrations-generator"
In Laravel 5.5 the service providers will automatically get registered.
In older versions of the framework edit config/app.php and add this to providers section:
Way\Generators\GeneratorsServiceProvider::class,
Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
If you want this lib only for dev, you can add the following code to your app/Providers/AppServiceProvider.php file, within the register() method:
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
// ...
}
Notes:
Thanks to @jamisonvalenta, you can now generate Migrations in Laravel 5!
feature/laravel-five-stable was forked from way/generators 3.0.3 and was made Laravel 5.0 ready. Jeffrey Way has discontinued support for Laravel 5, so the other artisan generate: commands may not have been made 5.0 compatible. Investigate the artisan make: commands for substitutes, contribute to Laravel to extend generation support, or fix it and submit a PR to jamisonvalenta/feature/laravel-five-stable.
Laravel 4 installation
Run the following composer command:
composer require --dev "xethron/migrations-generator:~1.3.0"
Next, add the following service providers:
'Way\Generators\GeneratorsServiceProvider',
'Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider',
And you're set. To double check if its working, run php artisan, and look for the command migrate:generate
Usage
To generate migrations from a database, you need to have your database setup in Laravel's Config.
执行下面的命令,就会根据数据库结构自动创建migrate文件:
php artisan migrate:generate
Run php artisan migrate:generate to create migrations for all the tables, or you can specify the tables you wish to generate using php artisan migrate:generate table1,table2,table3,table4,table5. You can also ignore tables with --ignore="table3,table4,table5"
Laravel Migrations Generator will first generate all the tables, columns and indexes, and afterwards setup all the foreign key constraints. So make sure you include all the tables listed in the foreign keys so that they are present when the foreign keys are created.
You can also specify the connection name if you are not using your default connection with --connection="connection_name"
Run php artisan help migrate:generate for a list of options.
https://github.com/orangehill/iseed
有话要说