timokoerber/laravel-json-seeder

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

1.0.1 2020-10-23 15:03 UTC

This package is auto-updated.

Last update: 2024-09-23 23:50:11 UTC


README

Laravel JSON Seeder

Laravel JSON Seeder

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

这个包双向都适用!

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

安装

使用Composer安装此包。建议只在开发时安装此包。

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

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

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

这将在配置文件中创建config/jsonseeder.php,你可以在这里找到配置。

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

// config/app.php

'providers' => [
    ...
    
    TimoKoerber\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(TimoKoerber\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许可授权。