rokde / laravel-clone-database-command
This package adds the ability to clone a database for development purposes locally. So you can overwrite personal data with faker values to keep the data type.
Fund package maintenance!
rokde
paypal.me/rok
Buy Me A Coffee
Requires
- php: ^8.2
- illuminate/contracts: ^10.0
- illuminate/database: ^10.0
- illuminate/queue: ^10.0
- illuminate/support: ^10.0
- rokde/laravel-utilities: ^1.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- doctrine/dbal: ^3.8
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
This artisan command can clone a production database to development databases with overwriting some personal data as configured.
Installation
You can install the package via composer:
composer require rokde/laravel-clone-database-command
Usage
You can use the pre-configured artisan console command:
php artisan db:clone
This assumes that there are the entries source
and target
in the database configuration.
Otherwise you can create your own clone command to meet the configurable needs.
All single tasks can be found in the src/Actions
folder. So you can join it like you want if necessary.
Configuration
The whole configuration is stored in a class DatabaseSyncConfiguration
.
source & target connection
The name of the connections and the connection configuration is editable. So if you already have a target
or source
connection configured - you can change that name if necessary.
chunk size
The chunk size can be configured for a specific table or for any table.
limit
The limit of rows can be configured for a specific table or for any table.
mutations
A mutation can be configured for a specific table or for any table. So the given column name can be used for any table when existent. So you can replace all email
columns by a fake email like so:
$config->addMutation('email', fn() => fake()->email);
behaviour
We can decided what to do with the tables already existing on the target: keep it as is, or drop all unhandled tables.
Another option is to delete records before inserting the new ones or should the table be dropped before and the structure should be stored newly.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.