antonyz89/yii2-seeder

一个用于快速用假数据填充数据库的工具

安装数: 15,614

依赖: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 3

类型:yii2-extension

1.3.4 2023-07-09 16:21 UTC

This package is auto-updated.

Last update: 2024-09-12 12:05:42 UTC


README

Donate with PayPal

--

Latest Stable Version Total Downloads Latest Unstable Version License

安装

安装此扩展的最佳方式是通过 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 seederDatabase::run() 中种子所有表

yii seeder [name] 种子一个表

yii seeder [name]:[funtion_name] 种子一个表并从选定的 TableSeeder 中运行特定函数

  • name 无 TableSeeder(例如,使用 yii seeder userUserTableSeeder

yii seeder/create model_nameconsole\seeder\tables 中创建一个 TableSeeder

对于种子,如果模型不在 common/models 的根目录中,只需将模型所在的文件夹添加到 common/models 目录中。

示例

yii seeder/create entity/user

entityUser(模型)位于 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 seederyii seeder [name]

  • name 无 TableSeeder(例如,使用 yii seeder userUserTableSeeder

DatabaseSeeder 模板

DatabaseSeeder 本地化在 console\seeder

class DatabaseSeeder extends TableSeeder
{

    const MODEL_COUNT = 10;

    public function run()
    {
        ModelTableSeeder::create()->run();
    }

}