dq042000/doctrine2-exporter

MySQL Workbench Schema Exporter for Doctrine 2

v4.0.2.2 2024-03-29 05:22 UTC

README

Build Status Latest Stable Version Total Downloads License

README

这是一个将MySQL Workbench模型 (*.mwb) 转换为Doctrine 2 Schema并升级以支持Laminas的导出器。

image

image

image

先决条件

  • 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的详细信息,请参阅文档

链接