从 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