tyghaykal / laravel-seed-generator
Laravel Seed Generator
Requires
- php: >=7.3
- laravel/framework: 5.8.*|6.*|7.*|8.*|9.*|10.*|11.*
Requires (Dev)
- orchestra/testbench: ^3.0|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^11.0|^10.0|^9.0|^8.0
README
从数据库中的真实数据生成 Laravel 种子文件。
支持的数据库
- MariaDB
- MySQL
- PostgreSQL
- SQL Server
- SQLite
版本兼容性
安装
composer require --dev tyghaykal/laravel-seed-generator
Laravel 设置
Laravel 会自动为您注册服务提供者,所以无需在此步骤中操作。
您可以使用 vendor:publish
生成一个配置文件来个性化此包,并选择 TYGHaykal\LaravelSeedGenerator\SeedGeneratorServiceProvider
。
php artisan vendor:publish
在配置文件中,您可以调整一些生成种子文件的设置,如命名空间、前缀、后缀和连接。
用法
选项
具有选项的模型用法
只需设置模型值,不需要 \App\Models
或 \App
或 config.php
中定义的命名空间,例如您的模型命名空间位于 \App\Models\Master\Type
下,所以您只需输入 Master\Type
。可以多个,用逗号分隔。
php artisan seed:generate --model-mode --models=Master\Type
您可以使用以下命令运行命令并显示菜单
php artisan seed:generate --model-mode --models=Master\Type --show-prompt
您可以使用 where 子句过滤要包含在种子文件中的数据
php artisan seed:generate --model-mode --models=Master\Type --where=field,type,value
您可以使用 where in 子句过滤要包含在种子文件中的数据
php artisan seed:generate --model-mode --models=Master\Type --where-in=field,value1,value2
您可以使用 where not in 子句过滤不包含在种子文件中的数据
php artisan seed:generate --model-mode --models=Master\Type --where-in=field,value1,value2
您可以使用 order-by 子句对要包含在种子文件中的数据进行排序
php artisan seed:generate --model-mode --models=Master\Type --order-by=field,type
您可以使用 limit 子句限制要包含在种子文件中的数据
php artisan seed:generate --model-mode --models=Master\Type --limit=10
您还可以根据 id 定义要包含在种子文件中的数据,只能用于单个模型
php artisan seed:generate --model-mode --models=Master\Type --ids="1,2,3"
或您想跳过某些 id
php artisan seed:generate --model-mode --models=Master\Type --ignore-ids="1,2,3"
您还可以根据字段名定义要包含在种子文件中的字段
php artisan seed:generate --model-mode --models=Master\Type --fields="id,name"
或您想跳过某些字段
php artisan seed:generate --model-mode --models=Master\Type --ignore-fields="id,name"
您还可以定义要种子哪个 hasMany 关系,仅对单个模型模式有效
php artisan seed:generate --model-mode --models=Master\Type --relations="relationName1,relationName2"
您还可以限制要种子的关系,仅对单个模型模式有效
php artisan seed:generate --model-mode --models=Master\Type --relations="relationName1,relationName2" --relations-limit=10
您还可以更改生成的种子文件的位置
php artisan seed:generate --model-mode --models=Master\Type --output=Should/Be/In/Here/Data // it will produce in path database/seeders/Should/Be/In/Here/DataSeeder // or // it will produce in path database/seeds/Should/Be/In/Here/DataSeeder
默认情况下,每个生成的种子文件都将显示在 DatabaseSeeder.php 中,如果您不想这样做,可以使用 --no-seed 选项
php artisan seed:generate --model-mode --models=Master\Type --no-seed
具有选项的表用法
只需将表值设置为表名,可以多个,用逗号分隔
php artisan seed:generate --table-mode --tables=master_leave_types
您可以使用以下命令运行命令并显示菜单
php artisan seed:generate --table-mode --tables=master_leave_types --show-prompt
您可以使用 where 子句过滤要包含在种子文件中的数据
php artisan seed:generate --table-mode --tables=master_leave_types --where=field,type,value
您可以使用 where in 子句过滤要包含在种子文件中的数据
php artisan seed:generate --table-mode --tables=master_leave_types --where-in=field,value1,value2
您可以使用 where not in 子句过滤不包含在种子文件中的数据
php artisan seed:generate --table-mode --tables=master_leave_types --where-in=field,value1,value2
您可以使用 order-by 子句对要包含在种子文件中的数据进行排序
php artisan seed:generate --table-mode --tables=master_leave_types --order-by=field,type
您可以使用 limit 子句限制要包含在种子文件中的数据
php artisan seed:generate --table-mode --tables=master_leave_types --limit=10
您还可以根据 id 定义要包含在种子文件中的数据
php artisan seed:generate --table-mode --tables=master_leave_types --ids="1,2,3"
或您想跳过某些 id
php artisan seed:generate --table-mode --tables=master_leave_types --ignore-ids="1,2,3"
您还可以根据字段名定义要包含在种子文件中的字段
php artisan seed:generate --table-mode --tables=master_leave_types --fields="id,name"
或您想跳过某些字段
php artisan seed:generate --table-mode --tables=master_leave_types --ignore-fields="id,name"
您还可以更改生成的种子文件的位置
php artisan seed:generate --table-mode --tables=master_leave_types --output=Should/Be/In/Here/Data // it will produce in path database/seeders/Should/Be/In/Here/DataSeeder // or // it will produce in path database/seeds/Should/Be/In/Here/DataSeeder
默认情况下,每个生成的种子文件都将显示在 DatabaseSeeder.php 中,如果您不想这样做,可以使用 --no-seed 选项
php artisan seed:generate --table-mode --tables=master_leave_types --no-seed