kdabrow/seeder-once

只运行一次 Laravel 种子文件

安装量: 74,139

依赖: 0

建议者: 0

安全性: 0

星星: 19

关注者: 2

分支: 0

开放问题: 1

类型:软件包

5.0.0 2024-04-02 15:23 UTC

This package is auto-updated.

Last update: 2024-09-02 16:07:04 UTC


README

GitHub Workflow Status (branch) Packagist Version Packagist Downloads Scrutinizer code quality (GitHub/Bitbucket)

Laravel Seeder Once

这个库允许你只运行一次你的 Laravel 种子文件。
无论 artisan 命令 db:seed 被调用多少次,已经完成的种子文件将不会被再次执行。

工作原理

与迁移类似工作。首先在数据库中创建表,然后记录所有扩展抽象类 Kdabrow\SeederOnce\SeederOnce 的种子。总的来说,这将防止在以前执行过的方法 run()。将数据记录到数据库中的机制深受 Laravel 迁移机制(来自 illuminate/database 包)的启发。

如何使用它

1. 安装它

通过 composer

在 Lumen 中,别忘了在 bootstrap/app.php 中注册提供者

$app->register(Kdabrow\SeederOnce\Providers\SeederOnceProvider::class);

2. 在数据库中创建种子文件表

使用此命令

php artisan db:install

此步骤是可选的。SeederOnce 特性会检测表是否存在。如果不存在,会自动创建。

3. 使用 SeederOnce 扩展你希望只运行一次的种子文件

结果应该看起来像这样

use Kdabrow\SeederOnce\SeederOnce;

class SomeSeeder extends SeederOnce
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

这可以防止再次运行已经运行过的 SomeSeeder 类。
提示:始终替换 Seeder 类为 SeederOnce。否则,db:seed 命令可能会打印出意外的结果。

配置

多次运行种子文件

可以通过将参数 $seedOnce 更改为 false 来覆盖默认功能

use Kdabrow\SeederOnce\SeederOnce;

class DatabaseSeeder extends SeederOnce
{
    public bool $seedOnce = false;
    
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

这样的种子文件将像正常的 Laravel 种子文件一样运行(每次调用都会运行)。

配置文件

可以发布配置文件

php artisan vendor:publish --tag=seederonce.config

表名

默认表名是:seeders

控制台输出

默认情况下,seeder-once 会更改 db:seed 控制台命令的输出。过去已经运行过的种子文件将不会打印在命令输出中。你可以通过配置或环境变量来更改此行为。

SEEDER_ONCE_PRINT_OUTPUT=true

已运行种子文件的输出如下

Database\Seeders\SomeSeeder was already seeded ..................... DONE

其他

关于先前版本的 重要说明

在先前版本中 SeederOnce 是一个特性。由于 Laravel 控制台输出在 9.21 版本中发生了变化,我被迫将特性更改为抽象类。 如果你想继续使用特性,请使用 seeder-once 2.2 版本。唯一的问题是命令 db:seed 的输出相当混乱。