antonyz89 / yii2-seeder
一个用于快速用假数据填充数据库的工具
Requires
- php: >=7.0
- ext-mbstring: *
- yiibr/yii2-br-validator: ^1.0
- yiisoft/yii2: ^2.0.5
- yiisoft/yii2-faker: *
README
--
安装
安装此扩展的最佳方式是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist antonyz89/yii2-seeder dev-master
或者在您的 composer.json 文件的 require 部分添加:
"antonyz89/yii2-seeder": "dev-master"
to the require section of your composer.json file.
用法
console/config/main.php
'controllerMap' => [
'seeder' => [
'class' => 'antonyz89\seeder\SeederController'
],
],
种子命令
yii seeder 在 Database::run() 中种子所有表
yii seeder [name] 种子一个表
yii seeder [name]:[funtion_name] 种子一个表并从选定的 TableSeeder 中运行特定函数
name无 TableSeeder(例如,使用yii seeder user为UserTableSeeder)
yii seeder/create model_name 在 console\seeder\tables 中创建一个 TableSeeder
对于种子,如果模型不在 common/models 的根目录中,只需将模型所在的文件夹添加到 common/models 目录中。
示例
yii seeder/create entity/user
entity 是 User(模型)位于 common/models 目录中的文件夹。
要更改模型默认路径,只需更改 SeederController 中的 $modelNamespace 变量。
只有 DatabaseSeeder::run() 中的种子将在 yii seeder 命令中使用
种子
示例模板
<?php namespace console\seeder\tables; use common\models\user\User; use console\seeder\DatabaseSeeder; use antonyz89\seeder\TableSeeder; use Yii; class UserTableSeeder extends TableSeeder { function run() { loop(function ($i) { $this->insert(User::tableName(), [ 'email' => "user$i@gmail.com", 'name' => $this->faker->name, 'document' => $this->faker->numerify('##############'), 'street' => $this->faker->streetName, 'number' => $this->faker->numerify('###'), 'zip_code' => $this->faker->postcode, 'city' => $this->faker->city, 'status' => User::STATUS_USER_ACTIVE //created_at and updated_at are automatically added ]); }, DatabaseSeeder::USER_COUNT); } }
默认情况下,所有 TableSeeder 都在插入新数据之前截断表,如果你不希望在 Seeder 中这样做,只需覆盖 $skipTruncateTables
public $skipTruncateTables = true;
TableSeeder 中的默认设置
public $skipTruncateTables = false; ... // truncate table $this->disableForeignKeyChecks(); $this->truncateTable(/* table names */); $this->enableForeignKeyChecks();
每个 Seeder 的末尾,如果任何列被遗忘,将显示所有缺失列的消息
> #################### MISSING COLUMNS ################### > # TABLE: {{%user}} # > # name => varchar(255) # > # age => int(2) # > ########################################################
DatabaseSeeder
DatabaseSeeder 将在首次 yii seeder/create model 时创建
在这里,您将所有 TableSeeder 放在 ::run()
要运行,请使用 yii seeder 或 yii seeder [name]
name无 TableSeeder(例如,使用yii seeder user为UserTableSeeder)
DatabaseSeeder 模板
DatabaseSeeder 本地化在 console\seeder
class DatabaseSeeder extends TableSeeder { const MODEL_COUNT = 10; public function run() { ModelTableSeeder::create()->run(); } }