lucaciotti / laravel-json-seeder
使用 JSON 文件在您的 Laravel 应用程序中创建并使用数据库种子
Requires
- halaxa/json-machine: dev-master
Requires (Dev)
- php: ^7|^8
- ext-json: *
- illuminate/console: ^5.6|^6|^7|^8
- illuminate/database: ^5.6|^6|^7|^8
- illuminate/filesystem: ^5.6|^6|^7|^8
- illuminate/support: ^5.6|^6|^7|^8
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 文件以种子数据库。
本软件包双向适用!
- 将数据库导出为 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 种子
当然,您可以手动创建 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
种子
转到您的 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>
错误与警告
许可证
版权© Timo Körber
Laravel JSON Seeder是一个开源软件,许可证为MIT许可证。查看许可证。