写在最前
因为平时在用Mybatis的时候可以根据数据库逆向生成文件,我就在想laravel是不是也可以这么做,然后去网上找了一大堆,发现都在推“xethron/migrations-generator”这个库,但是很明显作者从2017年之后,就没有再维护过了,很显然是不适合laravel9.x去用的,所以我找到了一个可以完美平替的库
生成迁移
首先需要在config/database.php
配置好数据库的连接信息(亲测支持表前缀),然后使用composer安装库
composer require kitloong/laravel-migrations-generator
之后使用laravel的artisan就可以逆向生成迁移文件了
代码语言:javascript复制# 为所有表生成迁移
php artisan migrate:generate
代码语言:javascript复制# 为指定表生成迁移
php artisan migrate:generate --tables="table1,table2,table3,table4,table5"
代码语言:javascript复制# 忽略指定表并生成迁移
php artisan migrate:generate --ignore="table3,table4,table5"
代码语言:javascript复制# 指定连接并生成迁移
php artisan migrate:generate --connection="connection_name"
代码语言:javascript复制# 生成迁移并合并成一个文件
php artisan migrate:generate --squash
完整用法
参数 | 详解 |
---|---|
-c, --connection[=CONNECTION] | 要使用的数据库连接 |
-t, --tables[=TABLES] | 您希望为其生成迁移的表或视图的列表,用逗号分隔,如: users,posts,comments |
-i, --ignore[=IGNORE] | 您希望忽略生成迁移的表或视图的列表,用逗号分隔,如:users,posts,comments |
-p, --path[=PATH] | 指定创建迁移的位置 |
-tp, --template-path[=TEMPLATE-PATH] | 指定生成器模板的路径 |
--date[=DATE] | 将在指定日期创建迁移。视图和外键将在 1秒内创建. 时间必须通过 Carbon::parse去格式化 |
--table-filename[=TABLE-FILENAME] | 自定义表迁移文件名,默认为: [datetime]_create_[name]_table.php |
--view-filename[=VIEW-FILENAME] | 自定义视图迁移文件名,默认为: [datetime]_create_[name]_view.php |
--proc-filename[=PROC-FILENAME] | 自定义存储过程迁移文件名,默认为: [datetime]_create_[name]_proc.php |
--fk-filename[=FK-FILENAME] | 自定义外键迁移文件名,默认为: [datetime]_add_foreign_keys_to_[name]_table.php |
--log-with-batch[=LOG-WITH-BATCH] | 指定迁移文件的批次号 |
--default-index-names | 不使用数据库索引进行迁移 |
--default-fk-names | 不使用数据库外键进行迁移 |
--use-db-collation | 使用现有数据库排序规则生成迁移 |
--skip-log | 不写入迁移的日志表 |
--skip-views | 跳过视图 |
--skip-proc | 跳过存储过程 |
--squash | 将所有迁移文件合并至一个文件中 |
--with-has-table | 使用 hasTable 检查是否存在表 |
结尾
这样我们就以一个非常优美的姿势逆向生成出了所有的迁移文件