vi-kon / laravel-db-exporter
Database table structure and data exporter to migration and seed files
Installs: 35 338
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 1
Forks: 6
Open Issues: 5
Requires
- php: >=5.4.0
- doctrine/dbal: ~2.3
- illuminate/support: ~5.0
This package is not auto-updated.
Last update: 2021-03-05 22:45:02 UTC
README
This is database table structure and data exporter to migration and seed files for Laravel 5
Table of content
Features
- create migration files from database table structure
- handle foreign keys (watch for recursive foreign keys)
- create model files from database table structure (even foreign keys)
- organize generated models depending on database tabla name to individual namespace and directory structure via regular expressions
- create seed files from database table content
Installation
Base
To composer.json
file add following lines:
// to "require" object "vi-kon/laravel-db-exporter": "~1.*"
Or run following command in project root:
composer require vi-kon/laravel-db-exporter
In Laravel 5 project add following lines to app.php
:
// to providers array 'ViKon\DbExporter\DbExporterServiceProvider',
Configuration and migration
Installing configuration and migration files simple run:
php artisan vendor:publish --provider="ViKon\DbExporter\DbExporterServiceProvider"
Configuration
Configuration files help set up default values for commands.
return [ /* | -------------------------------------------------------------------------- | Default connection name | -------------------------------------------------------------------------- | Database connection name. Valid connection names are defined in | database.php. If value is null default connection is used. | */ 'connection' => null, /* | -------------------------------------------------------------------------- | Default table prefix | -------------------------------------------------------------------------- | This table prefix is used in generated migration files or in generated | models. | */ 'prefix' => '', /* | -------------------------------------------------------------------------- | Default selected tables | -------------------------------------------------------------------------- | Select specified database tables only. No work with ignore option | together. In commands with --select option can add another tables. | */ 'select' => [], /* | -------------------------------------------------------------------------- | Default ignored tables | -------------------------------------------------------------------------- | Ignore specified database tables. No work with select option together. | In commands with --ignore option can add another tables. | */ 'ignore' => [ 'migrations', ], /* | -------------------------------------------------------------------------- | Model options | -------------------------------------------------------------------------- */ 'model' => [ /* | -------------------------------------------------------------------------- | Default namespace | -------------------------------------------------------------------------- | Namespace for generated models. In command with --namespace option can | overwrite. | */ 'namespace' => 'App\Models', /* | -------------------------------------------------------------------------- | Default path | -------------------------------------------------------------------------- | Generated models destination path. Is relative to projects base path. In | command with --path option can overwrite. | */ 'path' => app_path('Models'), /* | -------------------------------------------------------------------------- | Custom map | -------------------------------------------------------------------------- | Map is useful for organizing generated models to multiple namespaces and | directories. Each map entry is array with following associative keys: | | * tablePattern - regex pattern for selecting tables by name | * namespace - generated models namespace from selected tables | * path - generated models destination path from selected tables | * className - array containing pattern and replacement for preg_match | to generate models class name from table name. If value | is null original table name is used. The result is camel | cased. The subject table name is snake cased | */ 'map' => [ // [ // 'tablePattern' => '.*', // 'namespace' => 'App\Models', // 'path' => 'app/Models', // 'className' => [ // 'pattern' => '', // 'replacement' => '', // ], // ], ], ], /* | -------------------------------------------------------------------------- | Migration options | -------------------------------------------------------------------------- */ 'migration' => [ /* | -------------------------------------------------------------------------- | Default path | -------------------------------------------------------------------------- | Generated migration destination path. Is relative to projects base path. | In command with --path option can overwrite. | */ 'path' => base_path('database/migrations'), ], /* | -------------------------------------------------------------------------- | Seed options | -------------------------------------------------------------------------- */ 'seed' => [ /* | -------------------------------------------------------------------------- | Default path | -------------------------------------------------------------------------- | Generated seed destination path. Is relative to projects base path. | In command with --path option can overwrite. | */ 'path' => base_path('database/seeds'), ], ];
Usages
Note: Generated files may need some auto-formatting.
Creating migration files
The db-exporter:migrate
command is used for creating migration files from database. It has several options:
- prefix - database name prefix in migration files
- select - array of selected database table names (if set
ignore
option is ignored) - ignore - array of ignored database table names
- database - specify database connection name (if option is not set the default connection is used)
- force - force overwriting existing migration files
- path - output destination path relative to project root (default is
{PROJECT ROOT}/database/migrations
)
Note: Model path given by migration.path
config key have to be writable by PHP to generate models.
The example assumes following database tables:
- users
- groups
- pages with foreign key to user id
Exports all tables from default database:
php artisan db-exporter:migrate
The above command will generate following files into {PROJECT ROOT}/database/migrations
directory:
YYYY-MM-DD_000000_create_users_table.php YYYY-MM-DD_000001_create_groups_table.php YYYY-MM-DD_000002_create_pages_table.php
Note: Table names and column names are converted to snake cased.
Creating models
The db-exporter:models
command is used for creating models from database. It has several options:
- prefix - database name prefix in migration files
- select - array of selected database table names (if set
ignore
option is ignored) - ignore - array of ignored database table names
- connection - specify database connection name (if option is not set the default connection is used)
- force - force overwriting existing migration files
- namespace - models namespace (default is
App\Models
) - path - output destination path relative to project root (default is
{PROJECT ROOT}/database/migrations
)
Note: Some situation foreign methods name can match in models, so manual renaming is needed.
Note: In some cases relation guess (One to One
, Many to One
, One to Many
) can generate same method names in single class.
Note: Model path given by model.path
config key have to be writable by PHP to generate models.
Creating models from default database:
php artisan db-exporter:models
Creating seed files
The db-exporter:seed
command is used for creating seeds from database data. It has several options:
- prefix - database name prefix in migration files
- select - array of selected database table names (if set
ignore
option is ignored) - ignore - array of ignored database table names
- connection - specify database connection name (if option is not set the default connection is used)
- force - force overwriting existing migration files
- path - output destination path relative to project root (default is
database/seeds
)
Note: Seed path given by seed.path
config key have to be writable by PHP to generate seed classes.
Creating seed files from default database:
php artisan db-exporter:seed
License
This package is licensed under the MIT License