hydrax-skarrag/mwbs-exporter

Doctrine2 注释的 MySQL Workbench 架构导出器

dev-master 2013-12-13 10:54 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:06:27 UTC


README

Doctrine2 注释的 MySQL Workbench 架构导出器

注意

此分支将仅关注 Doctrine 2 注释(http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html)导出,用于 Symfony 2 项目。

此分支的主要变更

  • 生成基本类的选项
  • 其他多引用处理。给定外键用于命名约定。

先决条件

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

命令行界面 (CLI)

有一个新的 CLI 用于简化导出过程,名为 mwbs-export.php,您可以在 cli 文件夹下查看。CLI 具有在导出之前自定义导出配置的功能。默认情况下,CLI 应用程序将使用当前目录中的 export.json 配置文件提供参数,如果找到它。要禁用此行为,请参阅以下选项。

CLI 的语法

php cli/export.php [options] FILE [DEST]

其中

  • 选项:
    • --export=type,选择导出的结果,目前可用的类型
      • doctrine2-annotation,Doctrine 2.0 注释类
    • --config=file,从文件(JSON 格式)读取导出参数
    • --saveconfig,将导出参数保存到文件 export.json,以后可以作为 --config=file 的值使用
    • --list-exporter,显示所有可用的导出器
    • --no-auto-config,禁用自动查找配置文件
    • --zip,压缩结果
    • --help,显示用法(或抑制任何参数)
  • FILE,要导出的 mwb 文件
  • DEST,目标目录(可选),如果未指定,则假定当前目录

示例用法

php cli/export.php --export=doctrine2-annotation example/data/test.mwb ./generated
php cli/export.php --zip example/data/test.mwb

doctrine2-annotation 的示例导出参数(JSON)

{
    "export": "doctrine2-annotation",
    "zip": false,
    "dir": "temp",
    "params": {
        "generateBaseClasses": true,
        "backupExistingFile": true,
        "skipPluralNameChecking": false,
        "enhanceManyToManyDetection": true,
        "bundleNamespace": "",
        "entityNamespace": "",
        "repositoryNamespace": "",
        "useAnnotationPrefix": "ORM\\",
        "useAutomaticRepository": true,
        "indentation": 4,
        "filename": "%entity%.%extension%",
        "quoteIdentifier": false
    }
}

导出器选项

导出器选项

  • 缩进

    生成代码的缩进大小。

  • useTabs

    使用制表符进行缩进而不是空格。设置此选项将忽略 indentation 选项

  • filename

    输出文件名格式,使用以下标签 %schema%%table%%entity%%extension% 允许文件名替换为上下文数据。默认为 %entity%.%extension%

  • skipPluralNameChecking

    跳过模型复数名称的检查,保持原样,对于非英文表名很有用。默认为 false

  • backupExistingFile

    如果目标已存在,则在替换内容之前创建备份。默认为 true

  • enhanceManyToManyDetection

    如果启用,将在生成的代码中添加表之间的多对多关系。默认为 true

  • logToConsole

    如果启用,将日志输出到控制台。默认为 false

  • logFile

    如果指定,将日志输出到文件。如果此选项存在,则选项 logToConsole 将被忽略。默认为空。

  • generateBaseClasses

    生成实体基类

  • useAnnotationPrefix

    Doctrine 注释前缀。默认为 ORM\

  • useAutomaticRepository

    见上文。

  • bundleNamespace

    见上文。

  • 实体命名空间

    见上文。

  • 存储库命名空间

    见上文。

  • skipGetterAndSetter

    不生成列的 getter 和 setter。默认为 false

  • generateEntitySerialization

    生成方法 __sleep() 以包括序列化实体时仅包含真实列。默认为 true

  • quoteIdentifier

    如果此选项已启用,所有表名和列名都将使用反引号(`)进行引用。当表名或列名包含保留词时非常有用。默认为 false

MySQL Workbench 注释行为

  • {MwbExporter:external}true{/MwbExporter:external}(应用于表、视图)

    将表/视图标记为外部以跳过表/视图代码生成。对于 Doctrine,请使用 {d:external}true{/d:external} 代替。

  • {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}(应用于外键)

    您可以在外键的注释中指定关系的获取类型。 doctrine 的默认值是 LAZY。

  • {d:orphanRemoval}true{/d:orphanRemoval}(应用于外键)

    您可以在外键的注释中设置的另一个选项。(参考

链接