aymdev/fregata-bundle

Symfony 扩展包,用于 Fregata 迁移框架。

安装: 2

依赖关系: 0

建议者: 0

安全性: 0

星标: 2

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

v1.0.0 2022-05-24 12:19 UTC

This package is auto-updated.

Last update: 2024-08-24 17:16:11 UTC


README

Symfony 扩展包,用于 Fregata 数据迁移框架。提供用户界面并通过 Messenger 组件异步执行迁移。

Testing Coding Standards Bundle installation Latest Stable Version License

文档:

  1. 要求
  2. 安装
    1. Doctrine 实体
    2. Messenger 传输
    3. 用户界面
  3. 用户界面概述
    1. 主页面
    2. 运行列表
    3. 运行详情
  4. 启动迁移

要求

此扩展包需要 PHP >= 8.1 和一个 Symfony 4.45 应用程序。请注意,因为它使用数据库,所以会安装 Doctrine 扩展包。

如果您不熟悉 Fregata 的功能,请确保阅读其 文档

安装

使用 Composer 安装

composer require aymdev/fregata-bundle

Doctrine 实体

然后您需要为提供的实体创建数据库表(3 个实体 + 一个 ManyToMany 关系)。您可以根据自己的意愿这样做。

建议: 我首选的数据库迁移方法是使用 MakerBundlemake:migration 命令,然后是 Doctrinedoctrine:migrations:migrate 命令。

Messenger 传输

由于该扩展包的主要工作发生在 Messenger 组件中,您需要将提供的 消息 路由到您选择的 传输。例如 config/packages/messenger.yaml

framework:
    messenger:
        transports:
            # You are entirely responsible for the transport configuration
            async: '%env(MESSENGER_TRANSPORT_DSN)%'

        routing:
            # Every message implements the following interface, nothing more is needed
            'Fregata\FregataBundle\Messenger\FregataMessageInterface': async

用户界面

要启用用户界面,通过创建一个 config/routes/fregata.yaml 文件导入路由

fregata:
    resource: "@FregataBundle/Resources/config/routes.xml"
    prefix: /fregata

prefix 改为您想要的任何内容,或者如果您想将 Fregata 仪表板设置为应用程序的根目录,请将其删除。

然后您可以通过 /fregata 访问仪表板。

用户界面概述

主页面

仪表板列出当前的迁移运行,如果没有运行,则列出最后一个。迁移页面列出当前配置的迁移,以及链接到特定页面以快速查看组件列表和特定迁移的运行历史。完整的 运行历史 在单独的页面上。

运行列表

此处显示的表格用于用户界面的多个页面,并包含

  • 迁移运行的 ID
  • 迁移的名称,带有一个链接到 详情页面
  • 状态 标签
  • 时间统计:开始时间、结束时间和持续时间
  • 组件数量
  • 一个链接到 运行详情

运行详情

相同的信息可以在 运行详情 中找到: 迁移正在运行时,右上角将显示一个取消按钮。运行分为 3 个步骤,每个步骤都有选项卡

  • 前置任务
  • 迁移器
  • 后置任务

每个选项卡都显示一个进度条及其关联的组件。迁移器根据其依赖关系从左到右排序。

启动迁移

您可以通过在菜单中点击 “新建运行” 按钮从用户界面启动迁移。或者,还有一个可用的控制台命令 fregata:migration:execute

php ./bin/console fregata:migration:execute

然后您应该在用户界面上看到运行。

如果您想在 Fregata 框架中运行迁移,而不使用 Messenger,可以添加 --synchronous 选项。

警告:这样做的话,迁移将在前台运行,不使用数据库,且无法在 UI 上显示。