mysql-workbench-schema-exporter / doctrine2-exporter
MySQL Workbench Schema Exporter for Doctrine 2
Requires
- php: >=7.2
- mysql-workbench-schema-exporter/mysql-workbench-schema-exporter: ^4.1
- ntlab/php-obj: ^1.0
README
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 的说明,请参阅文档