损坏的 / schemas
数据库模式管理,适用于 CodeIgniter 4
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- tatter/agents: ^1.2
- tatter/tools: ^2.0
This package is auto-updated.
Last update: 2024-09-18 06:26:21 UTC
README
数据库模式管理,适用于 CodeIgniter 4
快速开始
- 使用 Composer 安装:
> composer require tatter/schemas
- 生成新的模式:
> php spark schemas
特性
- 以级联结构查看整个数据库的映射
- 读取或检测表关系以方便对象关系映射(例如,参见 Tatter\Relations)
- 通过模式分析获得有关优化数据库结构的有用建议1
- 在服务器或环境之间备份、还原或部署整个数据库结构1
- 从现有数据库生成 CodeIgniter 4 迁移文件1
- 通过从其他支持的格式读取模式文件将项目转移到 CodeIgniter 41
1 一些功能仍在开发中。有关计划中的未来扩展,请参阅 处理程序 > 开发。
安装
通过 Composer 安装以利用 CodeIgniter 4 的自动加载功能并始终保持最新状态
> composer require tatter/schemas
或者,通过下载源文件并将目录添加到 app/Config/Autoload.php
来手动安装。
配置(可选)
可以通过扩展其配置文件来更改库的默认行为。将 examples/Schemas.php 复制到 app/Config/ 并遵循注释中的说明。如果在 app/Config 中找不到配置文件,则库将使用自己的配置。
用法
Schemas 有四个主要功能,每个功能都有各种处理程序可用
- 草案:从各种来源生成新模式
- 存档:存储模式副本以供以后使用
- 读取:加载模式以供实时访问
- 发布:(尚未提供)修改环境以匹配模式规范
Schemas 服务还提供了便捷的包装函数来简化工作流程。在最基本的情况下(启用自动化),服务将使用一个简单的命令进行起草、存档和返回模式
$schema = service('schemas')->get();
您可能想要控制工作流程的哪些部分何时进行以优化性能。以下是一个常见过程的示例,映射默认数据库组并将结果模式存储到缓存中
// Map the database and store the schema in cache
$schemas = service('schemas');
$schemas->draft('database')->archive('cache');
// Load the schema from cache, add Model data, and get the updated schema
$schema = $schemas->read('cache')->draft('model')->get();
如果您需要偏离默认处理程序配置,则可以自行注入处理程序
$db = db_connect('alternate_database');
$databaseHandler = new \Tatter\Schemas\Drafter\Handlers\DatabaseHandler(null, $db);
$schema = $schemas->draft($databaseHandler)->get();
命令
Schemas 随附一个 spark
命令,用于方便的模式生成和显示
`schemas [-draft handler1,handler2,...] [-archive handler1,... | -print]`
使用该命令进行测试和故障排除,或将它添加到您的 cron 中以定期缓存模式
php spark schemas -draft database,model -archive cache
自动化
默认情况下,自动化已开启,但您可以通过配置文件中的 $automate
开关进行配置。自动化将允许服务回退到 Reader,甚至是在没有已加载的模式的情况下回退到 Drafter。虽然自动化使得使用库非常容易,但如果您的应用程序配置不正确,它可能会在每次页面加载时起草一个模式,这可能会导致性能成本。请使用自动化来帮助,但不要让它成为你的拐杖。
结构
模式 使用外键、索引和命名约定来自动检测关系。确保您的数据库使用适当的键和外键设置以协助检测。命名约定遵循 {table}_id
格式用于外键和 {table1}_{table2}
格式用于枢纽表。有关关系命名约定的更多示例,请参阅 Rails 指南 Active Record Associations(并对 Ruby 引用表示歉意)。
干预
如果自动检测失败或需要偏离约定,可以使用一些工具来覆盖或增强生成的模式。
- Config/Schemas:Config 文件包含一个
$ignoredTables
变量,允许您完全跳过表。默认情况下,这包括框架的migrations
表。 - app/Schemas/{file}.php:
DirectoryHandler
会加载在您的 Schemas 目录中检测到的任何模式 - 这为您提供了指定任何内容的机会。请参阅 tests/_support/Schemas/Good/Products.php 以获取示例。
草拟
当前支持的处理器
- 数据库
- 模型
- PHP
- 目录(仅 PHP 导入)
存档/读取
- 缓存
数据库支持
所有 CodeIgniter 4 数据库驱动程序都适用,但由于索引处理的一些差异,它们可能不会报告相同的结果。例如:请参阅 SQLite3 跳过的测试。
开发
最终目标是支持从任何来源映射和部署。计划实现的处理器包括
Publisher\DatabaseHandler
:从其模式重新创建实时数据库MigrationsHandler
:从迁移文件创建模式,或反之亦然FileHandler
:用于导入和导出流行模式文件格式的包装器- 等等...
以及文件特定的处理器
PhpHandler->archive()
:创建一个包含$schema
中 Schema 对象的 PHP 文件XmlHandler
:支持 Doctrine 风格的 XML 文件- 更多即将推出...
想要帮忙吗?所有代码和问题都在 GitHub 上管理,地址为 Tatter\Schemas