记录一些有关数据库操作的扩展包
逆向生成迁移文件: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
接下来会让你确认
这样就将已有的数据表,批量生成迁移文件啦,可以在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逆向生成迁移文件
导出表数据:orangehill/iseed
通过composer引入扩展包:
composer require orangehill/iseed
在你的 config/app.php
文件中添加 Service Provider
'providers' => [
...
Orangehill\Iseed\IseedServiceProvider::class,
],
基本使用
导出指定表的数据
在 php artisan iseed 后面带上本地数据表的名称, 可直接将数据库表的内容转换为 seeder 文件.
如下可生成 users 表的 seeder 文件:
php artisan iseed users
也可选择同时生成 users 和 topics seeder 文件:
php artisan iseed users,topics
强制覆盖导出文件 – force
在命令行后面带上 force 参数, 将强制覆盖原有生成的 seeder 文件, 如下:
php artisan iseed users --force
将直接覆盖之前生成的 UsersTableSeeder.php 文件
快速导入导出数据库快照:spatie/laravel-db-snapshots
通过composer引入扩展包
composer require spatie/laravel-db-snapshots
然后打开配置文件 config/filesystem.php
,在 disks
中新增 snapshots
配置项:
// ...
'disks' => [
// ...
'snapshots' => [
'driver' => 'local',
'root' => database_path('snapshots'),
],
// ...
如果你需要对 laravel-db-snapshots
扩展包进行更多自定义配置,还可以发布扩展包的配置文件到 config
目录下:
php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider" --tag="config"
使用入门
laravel-db-snapshots
扩展包通过 Artisan 命令对数据库快照进行管理。
创建快照
我们可以通过 Artisan 命令 snapshot:create
创建快照(快照名称可选,默认是日期时间作为快照名),也就是导出数据库:
php artisan snapshot:create my-first-dump
我们可以在 database/snapshots
目录下看到刚刚生成的快照文件:
还可以在创建时对快照进行压缩:
php artisan snapshot:create --compress
可以看到,生成的快照文件相较于不压缩的时候小了很多。
加载快照
可以通过 Artisan 命令 snapshot:load
加载快照到数据库,也就是导入数据库:
php artisan snapshot:load my-first-dump
还可以在导入时指定数据库连接名称:
php artisan snapshot:load my-first-dump --connection=connectionName
查看快照列表
我们可以通过 Artisan 命令 snapshot:list
查看所有快照列表:
php artisan snapshot:list
删除快照
最后,还可以通过 Artisan 命令 snapshot:delete
删除指定快照:
php artisan snapshot:delete my-first-dump
触发事件
在对数据库快照进行创建、加载、删除等操作时,会触发相应的数据库事件,你可以在应用中对这些事件进行监听和自定义处理:
Spatie\DbSnapshots\Events\CreatingSnapshot
: 快照创建前触发Spatie\DbSnapshots\Events\CreatedSnapshot
: 快照创建后触发Spatie\DbSnapshots\Events\LoadingSnapshot
: 快照加载前触发Spatie\DbSnapshots\Events\LoadedSnapshot
: 快照加载后触发Spatie\DbSnapshots\Events\DeletingSnapshot
: 快照删除前触发Spatie\DbSnapshots\Events\DeletedSnapshot
: 快照删除后触发
转载自这里基于 Laravel 扩展包 laravel-db-snapshots 快速导入导出数据库快照
本作品采用《CC 协议》,转载必须注明作者和本文链接