paysera / lib-database-init-bundle

该包最新版本(3.0.0)没有可用的许可证信息。

初始化项目数据库

3.0.0 2023-09-20 06:56 UTC

README

初始化数据库到所需状态。导出数据库。可以配置以导出数据库的不同部分(结构、特定分组表)。支持纯SQL查询和Doctrine Fixtures。

安装

安装: composer requre --dev paysera/lib-database-init-bundle 注册

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
            // ...
            $bundles[] = new \Paysera\Bundle\DatabaseInitBundle\PayseraDatabaseInitBundle();
        }
        return $bundles;
    }

配置

在你的 config_dev.yml 中 - 更改表名与项目中的对应表名

paysera_database_init:
    directories:
        sql: 
            initial: &initial '%kernel.project_dir%/sql/initial'
            additional: &additional '%kernel.project_dir%/sql/additional'
        fixtures: 
            main: '%kernel.project_dir%/fixtures'
        structure: *initial
    exports:
        configuration:
            name: configuration
            tables:
                - config_table_1
                - config_table_2
            directory: *initial
        data:
            name: data
            invert_tables_from: configuration
            directory: *initial
        users:
            name: users
            tables:
                - users_table
            directory: *additional
        cards:
            name: cards
            tables:
                - card_table
            directory: *additional
  • paysera_database_init.directories.sql(可选)- 将在指定的目录中查找 *.sql 文件,按行分割,并执行每一行。多行SQL语句应以 ;\n 字符分隔。

  • paysera_database_init.exports(可选)- 定义不同的数据库导出配置

    • name - 将用于导出文件的文件名
    • priority - 设置相对于其他导出的优先级;它也用作导出文件名的前缀
    • tables - 要导出的表的数组
    • directory - 导出文件将放置在此目录中
  • paysera_database_init.directories.fixtures(可选)- 将在指定的目录中加载所有 fixtures 到数据库中。请注意,在应用 fixtures 之前应执行迁移。

  • paysera_database_init.directories.structure(必需)- 结构将在指定的目录中导出

  • invert_tables_from(可选)- 忽略指定的导出配置的表。当不指定 tables 时,将导出数据库中除 {invert_tables_from}.tables 之外的所有表

运行

bin/console paysera:db-init:init {initializer} {set}

  • initializer - 可选的单个初始化器名称。
  • 提供的初始化器列表
    • sql
    • fixtures
  • set - 可选的配置名称,例如上面的配置示例中的 initialadditional

bin/console paysera:db-init:export {export_key}

  • export_key - 可选的单个导出器名称。

扩展

实现 \Paysera\Bundle\DatabaseInitBundle\Service\Initializer\DatabaseInitializerInterface 并使用 paysera_database_init.initializer 标记您的服务,提供 priority 标签属性。

运行PHPUnit测试

启动或切换开发环境

bin/devenv [7.4,8.0,8.1]

进入php容器

bin/devenv enter

安装composer包

composer install

运行测试

vendor/bin/phpunit

停止开发环境

bin/devenv stop