Have your database populated with fake data in no time!
- Very easy to use!
- Use time-tested fzaninotto/faker generators
- Easily map generators to database columns
- Supports related data
- Two ways of seeding a table: generators or plain array
- Ability to use your own generators
- Friendly autocomplete in modern IDE's (tested in phpstorm)
This "extension" is basically an adapter to the main framework-agnostic php database seeder library.
Installation ¶
The preferred way to install this extension is through composer.
Either run
composer require tebazil/yii2-db-seeder
or add
"tebazil/yii2-db-seeder": "*"
to the require section of your composer.json file.
Quick start ¶
You can quickly seed your database with generated data with something like this:
$seeder = new \tebazil\yii2seeder\Seeder();
$generator = $seeder->getGeneratorConfigurator();
$faker = $generator->getFakerConfigurator();
$seeder->table('article')->columns([
'id', //automatic pk
'book_id', //automatic fk
'name'=>$faker->firstName,
'content'=>$faker->text
])->rowQuantity(30);
$seeder->table('book')->columns([
'id',
'name'=>$faker->text(20),
])->rowQuantity(30);
$seeder->table('category')->columns([
'id',
'book_id',
'name'=>$faker->text(20),
'type'=>$faker->randomElement(['shop','cv','test']),
])->rowQuantity(30);
$seeder->refill();
Please review the Php db seeder for extended documentation on usage.
Differences from original library ¶
- With
Yii2 Db Seederyou do not need to provide database configuration by default, it usesYii::$app->dbto retrieve connection information. You can optionally provide seeder with a database connection component name. You do that like:
$seeder = new \tebazil\yii2seeder\Seeder('db2');
There. Seeder would be using Yii::$app->db2 now.
You can use standart yii wildcards for prefixed table names, like
{{%table_name}}.yii\db\Migrationis used as a database abstraction layer instead of a native database helper. This basically means that you can work with all the databases Yii2 supports.
User Contributed Notes
Leave a comment
If you have any questions, please ask in the forum instead.
Join the conversation to share a note.