适用于 CakePHP 的 DBML 插件
Requires
- php: >=7.4
- cakephp/cakephp: ^4.3
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- phpunit/phpunit: ^9.5
README
此插件可以从当前的 CakePHP 表文件(包括插件表文件)生成 DBML 文件。
请参阅 https://www.dbml.org/、https://dbdiagram.io 和 https://dbdocs.io/ 了解 DBML 的更多信息。
安装
建议通过 composer 安装此插件:
composer require lordsimal/cakephp-dbml --dev
然后执行
bin/cake plugin load LordSimal/CakephpDbml
或者 手动将以下内容添加到 src/Application.php
:
public function bootstrap(): void
{
parent::bootstrap();
// Other plugins
$this->addPlugin('LordSimal/CakephpDbml');
}
使用方法
安装插件后,您将获得一个新命令可用:
bin/cake generate_dbml
执行后,您应该在应用程序的根目录中看到一个名为 dbml-export.dbml
的新文件
然后可以将此文本文件复制粘贴到例如 https://dbdiagram.io,在那里您可以非常容易地拖放您的表到一个更直观的结构中
可能出现的警告信息
您可能会收到如下警告信息:
-> % bin/cake generate_dbml
Table for Tokens (tokens) from Plugin "Tools" is not present
这意味着当前数据库模式中没有该表,但您的代码(或在这种情况下,插件 "Tools")中包含了一个被检测到的表文件。
配置
所有默认配置键可以在该插件的 config/config.php
文件中查看
Dbml.path
=> 生成的文件将放置的路径Dbml.filename
=> 文件名Dbml.blacklistedPlugins
=> 应跳过的插件数组Dbml.blacklistedTables
=> 应跳过的表名数组
您可以通过向 config/app_local.php
添加以下内容来扩展任何这些值:
return [
'Dbml' => [
'blacklistedPlugins' => [
'CakeDC/Users',
],
'blacklistedTables' => [
'social_accounts',
'token',
'queued_jobs',
'queue_processes'
]
],
];
它是如何工作的?
执行上述命令将遍历所有 表文件(在您的应用程序以及所有安装的插件中)并加载其模式数据,包括关系。
默认情况下,它排除了 CakePHP 新应用程序中存在的插件 DebugKit
和 Migrations
如果您想了解哪些表和哪些关联被检测到,可以像这样执行命令:
bin/cake generate_dbml -v
收集所有表和关联数据后,它们将被格式化成更易于写入 DBML 文件的格式。
致谢
向 @dereuromark 表示衷心的感谢,尤其是他的 https://github.com/dereuromark/cakephp-model-graph 插件,它无疑激发并帮助我创建了此插件!