lucaciotti/laravel-json-seeder

使用 JSON 文件在您的 Laravel 应用程序中创建并使用数据库种子

安装: 242

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 0

分支: 4

类型:项目

1.1.7 2021-12-11 15:10 UTC

This package is auto-updated.

Last update: 2024-09-11 20:58:41 UTC


README

这是由 TimoKoerber 创建的出色软件包的修改版本。

在这个版本中,我将 Seeder 侧的 "json_decode" 调用更改为由 Halaxa 创建的 "json-machine" 包。

  • "json_decode" 在处理大型文件时(数据库种子时经常发生)通常会导致 "内存大小超出限制"。
  • "halaxa/json-machine" 提供了一个非常易于使用且内存效率高的、用于替换低效大型 JSON 文件迭代的解决方案。

此外,我还为种子过程添加了一些额外的配置。

我的变更日志

本项目所有显著变更都将记录在此文件中。

格式基于 Keep a Changelog,本项目遵循 语义版本控制

[1.1.1] - 2021-04-16

修复

  • 改进了 "异常 -> 文件为空" 读取每个文件时都会导致 "内存大小超出限制" 的问题。
  • 为每个种子文件插入计时器计算。

[1.1] - 2021-04-16

首次发布

Laravel JSON Seeder

Laravel JSON Seeder

在您的 Laravel 应用程序中创建和使用 JSON 文件以种子数据库。

本软件包双向适用!

  • 将数据库导出为 JSON 文件
  • 使用 JSON 文件种子数据库

安装

使用 composer 安装此软件包。建议仅在开发中使用该软件包。

composer require timokoerber/laravel-json-seeder --dev

接下来需要 发布 配置文件并使用 ... 注册所需的命令

php artisan vendor:publish --provider="LucaCiotti\LaravelJsonSeeder\JsonSeederServiceProvider"

这将创建一个名为 config/jsonseeder.php 的文件,其中您可以找到配置。

接下来,将 JsonSeederServiceProvider 添加到 config/app.php 中的 providers 数组中 ...

// config/app.php

'providers' => [
    ...
    
    LucaCiotti\LaravelJsonSeeder\JsonSeederServiceProvider::class,
    
    ...
]

从数据库创建 JSON 种子

Laravel JSON Seeder - Creating JSON seeds from database

当然,您可以手动创建 JSON 文件。但是,如果您已经有一个良好的开发数据库,您可以轻松将其导出为 JSON 种子。

您可以通过调用 ... 创建 数据库中每个表 的种子

php artisan jsonseeds:create

这将为您数据库中的每个表创建一个 JSON 文件(例如,表 users -> users.json,表 posts -> posts.json 等)。

如果您只想创建 一个特定表 的种子(例如,users),调用 ...

php artisan jsonseeds:create users

默认情况下,现有文件 不会被覆盖。如果您再次调用该命令,将创建一个 子目录,并将 JSON 种子存储在那里。如果您想 覆盖现有种子,请使用 overwrite 选项,例如 ...

php artisan jsonseeds:create users -o|--overwrite

或者只需 使用该命令 ...

php artisan jsonseeds:overwrite users

种子

Laravel JSON Seeder - Seeding

转到您的 databas/seeds/DatabaseSeeder.php 并在 run() 方法中添加 JsonSeeder,如下所示 ...

// database/seeds/DatabaseSeeder.php

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call(LucaCiotti\LaravelJsonSeeder\JsonDatabaseSeeder::class);
    }
}

您现在可以使用 常规 Artisan 命令 调用 JSON Seeder ...

php artisan db:seed

设置 & 配置

目录

默认情况下,您的种子将写入到或从目录 /database/json 读取。如果您想使用不同的目录,可以在 .env 文件中添加环境变量 JSON_SEEDS_DIRECTORY ...

# .env

JSON_SEEDS_DIRECTORY=database/json

忽略表

您数据库中的某些表可能不需要任何种子。如果您想忽略这些表,可以将它们放入/config.jsonseeder.php中的设置ignore-tables

// config/jsonseeder.php

'ignore-tables' => [
    'migrations',
    'failed_jobs',
    'password_resets',
]

如果您的数据库中的某个表为空,LaravelJsonSeeder默认会创建一个包含空数组的JSON文件。如果您想截断此表,这可能很有用。如果您不希望这样,可以更改config/jsonseeder.php中的设置ignore-empty-tables,这样就不会创建任何JSON种子。

// config/jsonseeder.php

'ignore-empty-tables' => true

重要!!!编辑配置文件后,请务必清除缓存:php artisan cache:clear

环境

当您在单元测试中使用种子并希望为此使用不同的种子时,环境变量JSON_SEEDS_DIRECTORY可能很有用。

- database
  - json
      - development
        - comapanies.json
        - users.json 
        - posts.json
      - testing
        - users.json
        - posts.json

开发

# .env

JSON_SEEDS_DIRECTORY=database/json/development

测试

// phpunit.xml

<phpunit>
    <php>
        <env name="JSON_SEEDS_DIRECTORY" value="database/json/testing"/>
    </php>
</phpunit>

错误与警告

jsonseeder-errors

许可证

版权© Timo Körber

Laravel JSON Seeder是一个开源软件,许可证为MIT许可证。查看许可证