MySQL Workbench Schema Exporter for Doctrine 2

v4.1.0 2024-09-25 03:52 UTC

This package is auto-updated.

Last update: 2024-09-25 04:15:36 UTC


README

Build Status Latest Stable Version Total Downloads License

README

这是一个将 MySQL Workbench 模型 (*.mwb) 转换为 Doctrine 2 架构的导出器。

先决条件

  • PHP 7.2+
  • 使用 Composer 安装依赖项

安装

composer require --dev mysql-workbench-schema-exporter/doctrine2-exporter

这将安装导出器,并需要 mysql-workbench-schema-exporter

然后您可以使用 vendor/bin/mysql-workbench-schema-export 调用 CLI 脚本。

配置

模型注释行为

  • {d:bundleNamespace}AcmeBundle{/d:bundleNamespace} (应用于表)

    覆盖 bundleNamespace 选项。

  • {d:m2m}false{/d:m2m} (应用于表)

    MySQL Workbench Schema Exporter 尝试自动猜测哪些表是多对多映射表,并且不会为这些表生成实体类。

    如果一个表包含恰好两个指向不同表的外键,并且这些表不是多对多映射表,则该表被认为是映射表。

    有时这种猜测对您来说是不正确的。但是,您可以在表的注释中添加一个提示,以表明它不是映射表。只需在表的注释中使用 {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" 的 "store_products" 表上

    {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"。

命令行界面 (CLI)

有关 mysql-workbench-schema-exporter 的说明,请参阅文档

链接