lulco/populator

Database fake data populator for PHP

1.3.0 2024-10-22 13:46 UTC

This package is auto-updated.

Last update: 2024-12-22 14:26:10 UTC


README

Allows populate fake data to your database

PHP unit PHPStan level PHP static analysis SensioLabsInsight Latest Stable Version Total Downloads PHP 7 supported

The best feature of this library is AutomaticPopulatorCommand which populates data based on full database structure. It analyses database table tree and creates items for each table - leaves first.

// file bin/command.php

$database = new Populator\Database\Database('db_name', 'mysql:dbname=db_name;host=db_host', 'db_user', 'db_password');
$populator = new Populator\Command\AutomaticPopulatorCommand($database, ['phoenix_log', 'phinxlog', 'migration_log', 'versions', 'api_logs', 'api_tokens'], true, $columnNameAndTypeCallbacks);

$application = new Application();
$application->add($populator);
$application->run();

Run:

php bin/command.php populator:populate

With this setup, AutomaticPopulatorCommand will create 5 items in all leaf-tables, than 25 for 2nd level, and 125 for all next levels. It can be changed by parameters $countBase and $maxCountPerTable of AutomaticPopulatorCommand.

You can also use AutomaticPopulator which allows you to create fake data for one table based on its structure or column names.

Create file e.g. bin/command.php as shown below (or add PopulatorCommand to existing Symfony console application):

// file bin/command.php

$application = new Symfony\Component\Console\Application();
$populator = new Populator\Command\PopulatorCommand();
$populator->addDatabase(new Populator\Database\Database('db_name', 'mysql:dbname=db_name;host=db_host', 'db_user', 'db_password'));

$table1Populator = new Populator\Populator\AutomaticPopulator('table_1', 50);
$populator->addPopulator($table1Populator);

$application->add($populator);
$application->run();

This setup will populate 50 fake rows for database table with name table_1 after executing this command:

php bin/command.php populator:populate