dq042000 / doctrine2-exporter
MySQL Workbench Schema Exporter for Doctrine 2
Requires
- php: >=7.2
- dq042000/mysql-workbench-schema-exporter: dev-master
README
README
这是一个将MySQL Workbench模型 (*.mwb) 转换为Doctrine 2 Schema并升级以支持Laminas的导出器。
先决条件
- PHP 7.2+
- Composer用于安装依赖项
安装
composer require --dev mysql-workbench-schema-exporter/doctrine2-exporter
这将安装导出器并需要mysql-workbench-schema-exporter。
然后您可以使用vendor/bin/mysql-workbench-schema-export
命令行脚本来调用CLI脚本。
配置
- Doctrine 2.0 YAML Schema
- Doctrine 2.0 Annotation
- Doctrine 2.0 Annotation with ZF2 Input Filter Classes
模型注释行为
-
{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的详细信息,请参阅文档