codenom / schemas
数据库模式管理,适用于CodeIgniter 4
Requires
- php: >=7.2
Requires (Dev)
- codeigniter4/codeigniter4: dev-develop
- mockery/mockery: ^1.0
- phpunit/phpunit: 8.5.*
This package is auto-updated.
Last update: 2024-09-25 21:22:26 UTC
README
数据库模式管理,适用于CodeIgniter 4
快速开始
- 使用Composer安装:
> composer require codenom/schemas
- 生成新的模式:
> php spark schemas
功能
- 以级联结构查看整个数据库
- 读取或检测表关系,便于对象关系映射(例如,请参阅 Tatter\Relations)
- 通过模式分析获得有关优化数据库结构的建议1
- 在服务器或环境之间备份、恢复或部署整个数据库结构1
- 从现有数据库生成CodeIgniter 4迁移文件1
- 通过从其他支持的格式读取模式文件将项目转移到CodeIgniter 41
1 一些功能仍在开发中。请参阅 Handlers > Development 了解计划中的未来扩展。
安装
通过Composer轻松安装以利用CodeIgniter 4的自动加载功能,并始终保持最新
> composer require codenom/schemas
或者,通过下载源文件并将目录添加到 app/Config/Autoload.php
来手动安装。
配置(可选)
可以通过扩展其配置文件来更改库的默认行为。将 bin/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 \Codenom\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
开关进行配置。自动化将允许服务在已加载模式失败时回退到读取器,甚至回退到草稿器。虽然自动化使使用库变得非常容易,但如果您的应用程序配置不正确,则可能会带来性能成本,因为它可能会在每次页面加载时草拟模式。请使用自动化来帮助,但不要让它成为一种拐杖。
结构
模式使用外键、索引和命名约定来自动检测关系。请确保您的数据库已使用适当的键和外键设置,以协助检测。命名约定遵循以下格式:{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对象的PHP文件,并在$schema
中XmlHandler
:支持Doctrine风格的XML文件- 更多即将到来...
想要帮忙吗?所有代码和问题都在GitHub上管理,地址为Codenom\Schemas