kitloong/laravel-migrations-generator

从现有数据库生成Laravel迁移

v7.0.5 2024-08-06 13:18 UTC

README

Style check CI Tests CI codecov Latest Stable Version Total Downloads License

从现有数据库生成Laravel迁移,包括索引和外键!

此包是基于https://github.com/Xethron/migrations-generator的修改版本,已更新以支持Laravel 5.6及以上版本,并增加了其他功能。

支持的数据库

Laravel Migrations Generator支持所有五个Laravel官方支持的数据库

  • MariaDB
  • MySQL
  • PostgreSQL
  • SQL Server
  • SQLite

版本兼容性

安装

建议通过composer安装此包

composer require --dev kitloong/laravel-migrations-generator

Laravel设置

Laravel将自动为您注册服务提供者。

Lumen设置

展开

Lumen中不可用自动发现,您需要在bootstrap/app.php中进行一些修改。

启用门面

取消注释以下行。

$app->withFacades();

注册提供者

将以下行添加到注册服务提供者部分。

$app->register(\KitLoong\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);

使用方法

要生成数据库的迁移,您需要在Laravel的配置中设置数据库(config/database.php)。

要为所有表创建迁移,请运行

php artisan migrate:generate

您可以使用以下方式指定您希望生成的表

php artisan migrate:generate --tables="table1,table2,table3,table4,table5"

您还可以通过以下方式忽略表

php artisan migrate:generate --ignore="table3,table4,table5"

Laravel Migrations Generator将首先生成所有表、列和索引,然后设置所有外键约束。

因此,请确保包含所有外键中列出的表,以便在创建外键时它们是存在的。

如果您不是使用默认连接,可以使用以下方式指定连接名称

php artisan migrate:generate --connection="connection_name"

压缩迁移

默认情况下,生成器将为每个表生成多个迁移文件。

您可以使用以下方式将所有迁移压缩到一个文件中

php artisan migrate:generate --squash

选项

运行php artisan help migrate:generate以获取选项列表。

SQLite修改外键

生成器首先生成所有表,然后向现有表添加外键。

然而,SQLite仅在创建表时支持外键,而不是在修改表时。_add_foreign_keys_迁移仍然会被生成,但如果迁移到SQLite类型数据库,则会被省略。

用户定义类型列

生成器将识别架构中的用户定义类型,然后以以下方式生成迁移

public function up()
{
    Schema::create('table', function (Blueprint $table) {
        ...
    });
    DB::statement("ALTER TABLE table ADD column custom_type NOT NULL");
}

请注意,新的column总是添加到创建的table的末尾,这意味着迁移中生成的列的顺序将与架构中的顺序不同。

支持用户定义类型的数据库

  • PostgreSQL
  • SQL Server

感谢

感谢Bernhard Breytenbach的出色工作。此包基于https://github.com/Xethron/migrations-generator

贡献者

Contributors

许可协议

Laravel Migrations Generator是开源软件,许可协议为MIT许可证