ovk13 / doctrine2-exporter
Doctrine 2 的 MySQL Workbench Schema 导出工具
Requires
- php: >=5.4.0
- mysql-workbench-schema-exporter/mysql-workbench-schema-exporter: ^3.0 || dev-master
This package is auto-updated.
Last update: 2024-09-07 19:38:51 UTC
README
这是一个导出工具,可以将 MySQL Workbench 模型 (*.mwb) 转换为 Doctrine 2 架构。
先决条件
- PHP 5.4+
- 使用 Composer 安装依赖
安装
php composer.phar require --dev mysql-workbench-schema-exporter/doctrine2-exporter
这将安装导出工具,还需要 mysql-workbench-schema-exporter。
然后,您可以使用 vendor/bin/mysql-workbench-schema-export
调用 CLI 脚本。
格式化设置选项
除了 mysql-workbench-schema-exporter 的常见选项之外,还支持以下选项
Doctrine 2.0 的常见设置选项
-
useAutomaticRepository
自动生成实体存储库类名称。
-
bundleNamespace
实体类名称的全局命名空间前缀。
-
entityNamespace
实体命名空间。
默认为
Entity
。 -
repositoryNamespace
实体存储库类名称的命名空间前缀。要应用此配置,必须将
useAutomaticRepository
设置为true
。 -
skipColumnWithRelation
不要生成与其他表有关联的列定义(对于 YAML)或列变量和列获取器和设置器(对于 Annotation)。
默认为
false
。 -
relatedVarNameFormat
生成相关列名称的格式。
默认为
%name%%related%
。 -
nullableAttribute
如何生成列和连接的 nullable 属性。如果您想根据其值自动包含 nullable 属性,请将其设置为
auto
。要始终包含 nullable 属性,请将其设置为always
。默认为
auto
。 -
generatedValueStrategy
自动生成值的策略。
默认为
auto
。 -
defaultCascade
要定义的默认级联选项。
默认为
false
。
Doctrine 2.0 YAML 架构
设置选项
-
extendTableNameWithSchemaName
在表名旁边包含架构名称。
默认为
false
。
Doctrine 2.0 注释
设置选项
-
useAnnotationPrefix
Doctrine 注释前缀。
默认为
ORM\
。 -
skipGetterAndSetter
不要生成列获取器和设置器。
默认为
false
。 -
generateEntitySerialization
生成
__sleep()
方法以在序列化实体时仅包含真实列。默认为
true
。 -
generateExtendableEntity
为架构中的每个表生成两个类,一个用于基础类,另一个用于扩展类。如果扩展类已存在,则不会生成。因此,可以在扩展类中放置自定义代码。
此选项将使用单表继承生成实体。
默认为
false
。 -
extendableEntityHasDiscriminator
如果启用,将使用
DiscriminatorColumn
和DiscriminatorMap
注释。默认为
true
。 -
quoteIdentifierStrategy
此选项确定是否根据策略值应用标识符引号。
auto
,如果标识符是保留字,则启用标识符引号。always
,始终引号标识符。none
,从不引号标识符。
默认为
auto
。 -
extendsClass
此选项允许您定义一个基类,所有生成的实体都从这个基类扩展。
默认为
''
。 -
propertyTypehint
此选项允许您指定是否对所有类型为类的非标量属性启用类型提示。例如,
\DateTime
将启用类型提示,而不会对object
或string
启用。默认为
false
。 -
useBehavioralExtensions
使用 Doctrine2 行为扩展,如创建名为'_img'的表,然后可以自动创建插件支持。
默认为
false
。 -
removeTablePrefix
此前缀将从模型名称中移除。
默认为
false
。
模型注释行为
-
{d:bundleNamespace}AcmeBundle{/d:bundleNamespace}
(应用于表)覆盖
bundleNamespace
选项。 -
{d:m2m}false{/d:m2m}
(应用于表)MySQL Workbench 架构导出器尝试自动猜测哪些表是多对多映射表,并且不会为这些表生成实体类。
如果表恰好包含指向不同表的两个外键,并且这些表不是多对多映射表,则该表被认为是映射表。
有时这种猜测对您是不正确的。但您可以在表的注释中添加提示,以表明它不是映射表。只需在表的注释中使用
{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:order}column{/d:order}
(应用于外键)将 OrderBy 注解应用于一对多和多对多关系。OrderBy 注解可以写成以下格式
column[,(asc|desc)]
支持多列,用换行符分隔。示例用法
{d:order} column1 column1,desc {/d:order}
-
{d:cache}READ_ONLY, NONSTRICT_READ_WRITE, READ_WRITE{/d:cache}
(应用于表和/或外键)您可以在表或外键的注释中指定 Doctrine 第二级缓存策略。它们将生成到注解或 YAML 中。(参考)
-
{d:relatedNames}RelationTable:NewName{/d:relatedNames}
(应用于表)覆盖
relatedVarNameFormat
。当表名和
relatedVarNameFormat
模式不够好时,重命名生成的相关列名。格式应该是 CamelCase 单数,并且应该映射到为相关实体生成的类。可以写成以下格式RelationTableName:CustomRelationName
支持多关系,用换行符分隔。示例用法:- 在 "store_products" 表上,有 "store_product_categories" 和 "store_product_images" 相关表
{d:relatedNames} StoreProductCategory:Category StoreProductImage:Image {/d:relatedNames}
它可以在父/子表中使用。例如,在 "store_product_images" 表上
{d:relatedNames} StoreProduct:Product {/d:relatedNames}
生成的 StoreProduct 类将具有 "category" 和 "image" 属性,而不是 "storeProductCategory" 和 "storeProductImage",而 "StoreProductImage" 类将具有 "product" 属性,而不是 "storeProduct"。
Doctrine 2.0 注解与 ZF2 输入过滤器类
Doctrine 2.0 注解与 ZF2 输入过滤器类格式化器直接扩展 Doctrine 2.0 注解。设置选项和模型注释行为与 Doctrine 2.0 注解完全相同,具有以下附加组件。
为字符串类型列添加一些 Zend\Validator\StringLength
,Zend\Filter\StringTrim
,Zend\Filter\StripTags
过滤器。如果列名包含 'phone' 或 '_tel',则自动创建 Zend\I18n\Validator\PhoneNumber
过滤器;如果列名包含 'email',则自动创建 Zend\Validator\EmailAddress
过滤器。
设置选项
-
generateEntityPopulate
为实体类生成
populate()
方法。默认为
true
。 -
generateEntityGetArrayCopy
为实体类生成
getArrayCopy()
方法。默认为
true
。
命令行界面 (CLI)
请参阅mysql-workbench-schema-exporter的文档。