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(); } }