contratosgov/laravel-db-snapshots

快速转储和加载数据库

1.0.0 2024-08-30 19:49 UTC

This package is auto-updated.

Last update: 2024-09-30 20:10:37 UTC


README

Latest Version on Packagist Quality Score StyleCI Total Downloads

本包为 Laravel 应用提供 Artisan 命令,用于快速转储和加载数据库。

# Create a dump
php artisan snapshot:create my-first-dump

# Make some changes to your db
# ...

# Create another dump
php artisan snapshot:create my-second-dump

# Load up the first dump
php artisan snapshot:load my-first-dump

# List all snapshots
php artisan snapshot:list

本包支持 MySQL、PostgreSQL 和 SQLite。

安装

您可以通过 Composer 安装此包

composer require spatie/laravel-db-snapshots

在 Laravel 5.5 及以上版本中,包将自动注册服务提供者。对于 Laravel 5.4 或以下版本,您必须将此服务提供者安装到 config/app.php

'providers' => [
    // ...
    Spatie\DbSnapshots\DbSnapshotsServiceProvider::class,
];

最后,您应该在 app/config/filesystems.php 中添加一个名为 snapshots 的磁盘,用于保存快照。这是一个典型的配置:

// ...
'disks' => [
    // ...
    'snapshots' => [
        'driver' => 'local',
        'root' => database_path('snapshots'),
    ],
// ...    

可选地,您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider" --tag="config"

这是发布文件的內容

return [

    /**
     * The name of the disk on which the snapshots are stored.
     */
    'disk' => 'snapshots',

    /**
     * The connection to be used to create snapshots. Set this to null
     * to use the default configured in `config/databases.php`
     */
    'default_connection' => null,

    /**
     * The directory where temporary files will be stored.
     */
    'temporary_directory_path' => storage_path('app/laravel-db-snapshots/temp'),

    /*
     * Create dump files that are gzipped
     */
    'compress' => false,
];

用法

要创建快照(即从数据库的转储),运行

php artisan snapshot:create my-first-dump

给快照命名是可选的。如果不传递名称,将使用当前日期和时间

# Creates a snapshot named something like `2017-03-17 14:31`
php artisan snapshot:create

在创建快照时,您可以选择创建压缩快照。为此,可以在命令行中传递 --compress 选项,或将配置选项 db-snapshots.compress 设置为 true

# Creates a snapshot named my-compressed-dump.sql.gz
php artisan snapshot:create my-compressed-dump --compress

在数据库中进行了更改后,您可以创建另一个快照

php artisan snapshot:create my-second-dump

要加载以前的转储,运行以下命令

php artisan snapshot:load my-first-dump

要加载以前的转储到另一个数据库连接

php artisan snapshot:load my-first-dump --connection=connectionName

要列出所有转储,运行

php artisan snapshot:list

可以使用以下命令删除转储

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:将在删除快照后触发

更新日志

请参阅 CHANGELOG 了解最近更改的详细信息。

测试

composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何安全问题,请通过电子邮件 freek@spatie.be 而不是使用问题跟踪器。

明信片软件

您可以使用此包(它受 MIT 许可),但如果它进入了您的生产环境,我们非常希望您从家乡寄给我们一张明信片,说明您正在使用我们的哪个包。

我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。

我们将在我们的公司网站上发布收到的所有明信片 在这里

鸣谢

支持我们

Spatie 是一家总部位于比利时的安特卫普网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里

您的业务依赖于我们的贡献吗?请联系我们,在 Patreon 上支持我们。所有承诺都将致力于分配人力以维护和新奇事物。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件