motensai/yii2-seeder

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

安装: 295

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 3

开放问题: 0

类型:yii2-extension

1.3.3 2023-05-05 11:38 UTC

This package is auto-updated.

Last update: 2024-09-05 11:54:55 UTC


README

Donate with PayPal

--

Latest Stable Version Total Downloads Latest Unstable Version License

安装

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

yii seeder [name] 种植一个表

yii seeder [name]:[function_name] 从所选 TableSeeder 运行一个特定的函数并种植一个表

  • 例如 yii seeder userUserTableSeeder 进行种植(无 TableSeeder 的 name

yii seeder/create model_nameconsole\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 seederyii seeder [name]

  • 例如 yii seeder userUserTableSeeder 进行种植(无 TableSeeder 的 name

DatabaseSeeder 模板

DatabaseSeeder 本地化在 console\seeder

class DatabaseSeeder extends TableSeeder
{

    const MODEL_COUNT = 10;

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

}