leongersen/entity-generator

支持oneToMany和manyToOne关系的数据库优先Doctrine实体生成器

0.0.5 2020-01-24 09:54 UTC

This package is auto-updated.

Last update: 2024-09-10 17:15:32 UTC


README

Doctrine项目将在Doctrine 3中移除生成实体的支持

并非所有开发工作流程都适合提议的实体优先数据库管理策略。

为了继续支持数据库优先工作流程,该项目实现了一个面向数据库的替代实体生成器。

特性

  • 生成带有类型注解、getter、setter、adders和removers的实体;
  • 支持oneToManymanyToOne关系,包括属性和方法的多态化。

许可证

本项目采用MIT许可证,并且可以免费用于任何个人或商业项目。

用法

bin/entity-generator entity-generator:generate

选项

  • dsn接受与Doctrine相同的格式,因此可以使用在.env中配置的值
  • namespace生成实体的命名空间(默认App\Entity
  • directory生成实体的输出目录(默认src/Entity
  • collection-interface用于生成实体中集合类型的接口名称(默认\Doctrine\Common\Collections\Collection
  • collection-implementation(默认\Doctrine\Common\Collections\ArrayCollection

使用来自.env文件的DSN

source .env
bin/entity-generator entity-generator:generate --dsn $DATABASE_URL

实现

  • 使用SHOW CREATE TABLE从现有数据库生成映射。
  • 使用Twig模板渲染实体类。

限制

  • 仅提供基于\PDO的驱动程序和适用于类似MySQL的sql方言的映射器。
  • (尚未)未实现(唯一)索引的注解
  • ManyToMany关系尚未支持(《动机》)
  • 不支持Doctrine自定义类型

开放问题

  • xyx_id与外键和字段xyx(都变为xyz)之间存在命名冲突
  • 在一张表到另一张表的多个外键之间存在命名冲突(《xyz.abc_1_idxyz.abc_2_id都变为xyz.abcs》)
  • 尚未实现Blobs