demboo / mysql-workbench-schema-exporter
MySQL Workbench Schema Exporter
Requires
- php: >=5.3.3
- doctrine/inflector: 1.0.*
- dev-master
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is not auto-updated.
Last update: 2024-09-18 10:12:54 UTC
README
从 johmue/mysql-workbench-schema-exporter 分支出来。仅支持 Doctrine 2.0 README
注意
该软件是实验性的,尚未准备好投入生产。它只是一个概念验证。
先决条件
- PHP 5.3+
- Composer 安装依赖项
安装依赖项
要获取定义的依赖项到您的本地项目,只需运行 composer.phar
的 install
命令。
$ php composer.phar install
什么是 MySQL Workbench 模式导出器?
该应用程序旨在创建
schema 文件。它受到 mysql-workbench-doctrine-plugin 的启发。
外键名称
要使用外键名称替换关系名称,请以外键名称开头为 "d:"。
命令行界面 (CLI)
有一个新的 CLI,名为 export.php
,用于简化导出过程,您可以在 cli
文件夹下查看。CLI 具有在导出之前自定义导出配置的功能。默认情况下,CLI 应用程序将使用位于当前目录中的配置文件 export.json
来提供参数,如果找到它。要禁用此行为,请参阅下面的选项。
CLI 的语法
php cli/export.php [options] FILE [DEST]
其中
选项
:--export=type
,选择导出的结果,目前可用的类型doctrine2-annotation
,Doctrine 2.0 注解类
--config=file
,从文件(JSON 格式)读取导出参数--saveconfig
,将导出参数保存到文件export.json
,以后可以用作--config=file
的值--list-exporter
,显示所有可用的导出器--no-auto-config
,禁用自动配置文件查找--zip
,压缩结果--help
,显示用法(或抑制任何参数)
FILE
,要导出的 mwb 文件DEST
,目标目录(可选),如果未指定,则假定当前目录
示例用法
php cli/export.php --export=doctrine2-annotation example/data/test.mwb ./generated
php cli/export.php --zip example/data/test.mwb
doctrine2-annotation 的示例导出参数(JSON)
{
"export": "doctrine2-annotation",
"zip": false,
"dir": "temp",
"params": {
"backupExistingFile": true,
"skipPluralNameChecking": false,
"enhanceManyToManyDetection": true,
"bundleNamespace": "",
"entityNamespace": "",
"repositoryNamespace": "",
"useAnnotationPrefix": "ORM\\",
"useAutomaticRepository": true,
"indentation": 4,
"filename": "%entity%.%extension%",
"quoteIdentifier": false,
"generateEntitySerialization": false,
"generateEntityToArray": true
}
}
导出器选项
常规选项
应用于所有格式化程序的常规选项。
-
缩进
生成代码的缩进大小。
-
useTabs
使用制表符进行缩进而不是空格。设置此选项将忽略
indentation
选项 -
filename
输出文件名格式,使用以下标记
%schema%
,%table%
,%entity%
,和%extension%
以允许文件名用上下文数据替换。默认为%entity%.%extension%
。 -
skipPluralNameChecking
跳过检查模型的复数名称,保持原样,对非英语表名称很有用。默认为
false
。 -
backupExistingFile
如果目标已存在,则在替换内容之前创建备份。默认为
true
。 -
enhanceManyToManyDetection
如果启用,将在生成的代码中添加表之间的多对多关系。默认为
true
。 -
logToConsole
如果启用,将日志输出到控制台。默认为
false
。 -
logFile
如果指定,将日志输出到文件。如果此选项存在,则选项
logToConsole
将被忽略。默认为空。
所有内容的注释行为
-
{MwbExporter:external}true{/MwbExporter:external}
(应用于表、视图)将表/视图标记为外部,以跳过表/视图代码生成。对于Doctrine,请使用
{d:external}true{/d:external}
代替。
Doctrine 2.0 注解的选项列表
-
useAnnotationPrefix
Doctrine 注解前缀。默认是
ORM\
。 -
useAutomaticRepository
见上方。
-
bundleNamespace
见上方。
-
实体命名空间
见上方。
-
仓库命名空间
见上方。
-
skipGetterAndSetter
不要生成列的 getter 和 setter。默认是
false
。 -
generateEntitySerialization
生成方法
__sleep()
,以便在实体序列化时只包含真实列。默认是true
。 -
quoteIdentifier
如果启用此选项,所有表名和列名都将使用反引号(
`
)引用。当表名或列名包含保留词时非常有用。默认是false
。
Doctrine 2.0 注解的注释行为
-
{d:bundleNamespace}AcmeBundle{/d:bundleNamespace}
(应用于表)覆盖
bundleNamespace
选项。 -
{d:m2m}false{/d:m2m}
(应用于表)MySQL Workbench 架构导出器会尝试自动猜测哪些表是多对多映射表,并且不会为这些表生成实体类。如果一个表包含正好两个指向不同表的 foreign key,并且这些表不是多对多映射表,则该表被认为是映射表。
有时这个猜测对你来说是不正确的。但您可以在表的注释中添加提示,表明它不是映射表。只需在表的注释中使用"{d:m2m}false{/d:m2m}"即可。
-
{d:unidirectional}true{/d:unidirectional}
(应用于外键)默认情况下,所有外键都将产生双向关系。如果您只想有一个单向关系,请在外键的注释中添加标志。
-
{d:owningSide}true{/d:owningSide}
(应用于外键)在一个双向多对多映射表中,关系的所有权方是随机选择的。如果您将此提示添加到 m2m 表的一个外键中,您可以定义 Doctrine 的所有权方。
-
{d:cascade}persist, merge, remove, detach, all{/d:cascade}
(应用于外键或字段)您可以在外键的注释中指定 Doctrine 级联选项。它将被生成到注解中。(参考)
-
{d:fetch}EAGER{/d:fetch}
(应用于外键)您可以在外键的注释中指定关系的抓取类型。可以是(EAGER 或 LAZY,Doctrine 默认是 LAZY)
-
{d:orphanRemoval}true{/d:orphanRemoval}
(应用于外键)您可以在外键的注释中设置另一个选项。(参考)
-
{d:o2o}true{/d:o2o}
(应用于字段)用于创建一对一关系。
-
{d:orphanRemoval}true{/d:orphanRemoval}
(应用于字段)添加 orphanRemoval 属性。
-
{d:orderBy}priority=ASC{/d:orderBy}
(应用于字段)用户排序。
-
{d:skip}true{/d:skip}
(应用于字段或表)跳过字段或表
-
{d:generator-strategy}NONE{/d:generator-strategy}
(应用于 id 字段)[AUTO, SEQUENCE, TABLE, IDENTITY, NONE, UUID, CUSTOM]id 的生成策略
-
{d:field-mapped}parentCategory{/d:field-mapped}
(应用于字段)覆盖映射字段名。
-
{d:field-inversed}childCategories{/d:field-inversed}
(应用于字段)覆盖反向字段名。
-
{d:lifecycleCallbacks}postLoad:fnc,prePersist:fnc,postPersist:fnc,preRemove:fnc,postRemove:fnc,preUpdate:fnc,postUpdate:fnc{/d:lifecycleCallbacks}
(应用于表)您可以在表的注释中指定 Doctrine lifecycleCallbacks 选项。它将被生成到注解中。
-
{d:type}dateinterval|datetime_with_millisecond{/d:type}
(应用于字段)强制数据类型转换
Doctrine 2.0 注解 ZF2 Inputfilter 的附加选项列表
generateEntityPopulate
generateEntityGetArrayCopy
需求
与 PHP 5.3 及更高版本兼容。
链接
测试数据库
示例
<?php
// enable autoloading of classes
$libDir = __DIR__.'/lib';
require_once($libDir.'/MwbExporter/SplClassLoader.php');
$classLoader = new SplClassLoader();
$classLoader->setIncludePath($libDir);
$classLoader->register();
// create bootstrap
$bootstrap = new \MwbExporter\Bootstrap();
// define a formatter and do configuration
$formatter = $bootstrap->getFormatter('doctrine2-annotation');
$formatter->setup(array());
// specify the workbench document to load, output directory, and storage type (zip or file)
$mwbfile = 'myDatabaseModel.mwb';
$outDir = getcwd();
$storage = 'zip';
// load document and export
$document = $bootstrap->export($formatter, $mwbfile, $outDir, $storage);
// show the output
echo sprintf("Saved to %s.\n\n", $document->getWriter()->getStorage()->getResult());
?>