innovato/doctrine2-exporter

Doctrine 2 的 MySQL Workbench 架构导出器

3.0.3 2019-02-12 14:39 UTC

This package is not auto-updated.

Last update: 2024-09-19 12:38:44 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 命令行脚本。

格式化设置选项

除了 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

  • columnNameCodingStyle

    更改列名称的编码风格(lowercamelcase 或 underscore)。

    默认为 underscore

Doctrine 2.0 YAML 架构

设置选项

  • extendTableNameWithSchemaName

    在表名称旁边包含模式名称。

    默认为 false

Doctrine 2.0 Annotation

设置选项

  • useAnnotationPrefix

    Doctrine 注解前缀。

    默认为 ORM\

  • skipGetterAndSetter

    不要生成列获取器和设置器。

    默认为 false

  • generateEntitySerialization

    生成方法 __sleep() 以在实体序列化时仅包含实际列。

    默认为 true

  • generateExtendableEntity

    为架构中的每个表生成两个类,一个用于基础类,另一个用于扩展类。如果扩展类已存在,则不会生成。因此,可以在扩展类中放置自定义代码。

    此选项将使用单表继承生成实体。

    默认为 false

  • extendableEntityHasDiscriminator

    如果启用,将使用 DiscriminatorColumnDiscriminatorMap 注解。

    默认为 true

  • quoteIdentifierStrategy

    此选项确定是否应用标识符引用,取决于策略值。

    • auto,如果标识符是保留词,则启用标识符引用。
    • always,始终引用标识符。
    • none,从不引用标识符。

    默认为 auto

  • 继承类

    此选项允许您定义一个基类,所有生成的实体都从此基类扩展。

    默认为 ''

  • propertyTypehint

    此选项允许您指定是否对所有类型为类的非标量属性启用类型提示。例如,\DateTime 将被类型提示,但不是 objectstring

    默认为 false

  • useBehavioralExtensions

    使用 Doctrine2 行为扩展,例如创建名为 '_img' 的表,然后可以自动创建插件支持。

    默认为 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 模式不够好时,可以重命名生成的相关列名。格式应该是驼峰式单数,并且应与为相关实体生成的类名匹配。可以写成以下格式

    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\StringLengthZend\Filter\StringTrimZend\Filter\StripTags 过滤器。对于列名包含 'phone' 或 '_tel' 的列,自动创建 Zend\I18n\Validator\PhoneNumber 过滤器;对于列名包含 'email' 的列,自动创建 Zend\Validator\EmailAddress 过滤器。

设置选项

  • generateEntityPopulate

    为实体类生成 populate() 方法。

    默认为 true

  • generateEntityGetArrayCopy

    为实体类生成 getArrayCopy() 方法。

    默认为 true

命令行界面 (CLI)

请参阅mysql-workbench-schema-exporter 的文档。

链接