motensai / 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 mootensai/yii2-seeder dev-master
或
"mootensai/yii2-seeder": "dev-master"
将以下内容添加到您的 composer.json
文件的 require 部分。
用法
console/config/main.php
'controllerMap' => [
'seeder' => [
'class' => 'mootensai\seeder\SeederController'
],
],
SEEDER 命令
yii seeder
在 Database::run()
中种植所有表
yii seeder [name]
种植一个表
yii seeder [name]:[function_name]
从所选 TableSeeder 运行一个特定的函数并种植一个表
- 例如
yii seeder user
对UserTableSeeder
进行种植(无 TableSeeder 的name
)
yii seeder/create model_name
在 console\seeder\tables
中创建一个 TableSeeder
对于 Seeder,如果模型不在 common/models
的根目录中,只需将模型所在文件夹添加到 common/models
目录中。
示例
yii seeder/create entity/user
entity
是模型 User
(模型)位于 common/models
目录中的文件夹。
要更改模型的默认路径,只需更改 SeederController
中的 $modelNamespace
变量。
只有 DatabaseSeeder::run()
内部的 Seeder 将在 yii seeder
命令中使用
SEEDER
示例模板
<?php namespace console\seeder\tables; use common\models\user\User; use console\seeder\DatabaseSeeder; use mootensai\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]
- 例如
yii seeder user
对UserTableSeeder
进行种植(无 TableSeeder 的name
)
DatabaseSeeder 模板
DatabaseSeeder
本地化在 console\seeder
class DatabaseSeeder extends TableSeeder { const MODEL_COUNT = 10; public function run() { ModelTableSeeder::create()->run(); } }