定制 vi-kon/laravel-db-exporter 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vi-kon/laravel-db-exporter

最新稳定版本:v1.0

Composer 安装命令:

composer require vi-kon/laravel-db-exporter

包简介

Database table structure and data exporter to migration and seed files

README 文档

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

Back to top

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"

Back to top

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'),
    ],
];

Back to top

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.

Back to top

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

Back to top

License

This package is licensed under the MIT License

Back to top

统计信息

  • 总下载量: 37.61k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 10
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 10
  • Watchers: 1
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-03-18