从 orm.xml Doctrine 生成 php 实体

Posted

技术标签:

【中文标题】从 orm.xml Doctrine 生成 php 实体【英文标题】:Generate php entities from orm.xml Doctrine 【发布时间】:2020-12-31 09:46:10 【问题描述】:

您好,我在 Symfony 5 上,我想生成 php 实体并从 orm.xml 文件更新方案。

我认为它以前适用于教条:generate:entities 命令。

有什么解决办法吗?提前致谢

【问题讨论】:

根据Doctrine docs,Doctrine 本身仍然支持从数据库生成实体。如果您真的想这样做,那么您可以尝试一下。你需要设置几个 Doctrine 配置文件并运行 vendor/bin/doctrine。该链接还解释了一些限制。 【参考方案1】:

删除了命令doctrine:generate:entities。 Doctrine ORM 团队不鼓励从现有模式创建实体,因此在 ORM 中弃用了该功能。

使用MakerBundle,您可以创建实体,但据我所知,它不会从架构中创建它们,因此您必须手动创建每个实体,如果您只想生成它们,这无疑会很烦人无论如何基于现有的架构。或者,您可以创建一个新的“旧版”Symfony 应用程序(例如,基于 3.4 版,因为它应该仍然有命令)create the entities from the schema as described in the docs,然后将生成的实体复制到您的项目中。您可能还需要搜索和替换 AppBundle\Entity -> App\Entity

【讨论】:

谢谢,维护模型太难了。我不明白为什么 symfony 弃用它并且没有提供新功能。 有很多原因。文档中说明了一些导致输出不完整的内容:“Doctrine 能够根据字段、索引和外键约束转换大约 70-80% 的必要映射信息。Doctrine 无法发现反向关联,继承类型、外键作为主键的实体或关联的语义操作,例如级联或生命周期事件。”

以上是关于从 orm.xml Doctrine 生成 php 实体的主要内容,如果未能解决你的问题,请参考以下文章

ZF2 Skeleton 和 Doctrine ORM xml 模式合并

simplexml_load_file():I/O 警告:未能加载外部实体“/user-bundle/Resources/config/doctrine/model/User.orm.xml

Zend 2 Framework - Doctrine从给定的2个实体生成表

如何从注解生成 ORM.XML 映射文件?

Symfony 4 Doctrine逆向工程问题

从 MySQL 数据库为 Doctrine 生成 YAML 模式或模型