Symfony2从.yml文件生成Doctrine实体

4
所以我有一个现有的数据库,但我无法按照这里概述的步骤进行操作:http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html,因为我的一些表具有外键作为主键。
我的解决方案是创建一个没有外键约束的数据库副本,并从该副本生成.yaml文件。
现在,我在./src/My/MainBundle/Resources/config/doctrine/metadata/orm中有XXX.orm.yml文件。
然后,我尝试使用此命令将这些.yml文件转换为带注释的实体类: php app/console doctrine:mapping:import MyMainBundle annotation 但是它会忽略我的.yml文件。 它要么从没有外键的数据库生成通用类,要么在我的真实数据库上使用它时抛出错误。 它甚至不看我的.yml文件。
所以我想知道的是,如何将*.orm.yml文件转换为实体类?

3
我设法让它工作了,但我必须说做这件事的文档非常糟糕,我不得不采用另一种方法... - Matt
嗨。你应该发布你的解决方案并将其标记为已回答。我最近几天一直在研究Doctrine的逆向工程,我很想了解你的方法。 - Darragh Enright
我认为下面的答案是可行的,但不确定,一旦 SO 允许我标记回答,我会将其标记为已解决。 - Matt
遇到了同样的问题,但无法运行。如何将.yml文件转换为实体。由于文档不完整,我花费了数小时来解决这个问题。代码 (C:\ Users \ Umra \ myBookShop> php app \ console doctrine:mapping:import AppBundle注释--path =“./ src”警告:模块“openssl”已在未知位置的第0行加载警告:模块“openssl”已在未知位置的第0行加载[Symfony \ Component \ Console \ Exception \ RuntimeException] “--path”选项不存在。) - NadZ
4个回答

4

我不确定这是否是我需要做的全部来修复它,但我认为解决方案就是将我的.orm.yml文件移动到

./src/My/MainBundle/Resources/config/doctrine/metadata/orm

to

./src/My/MainBundle/Resources/config/doctrine

运行中

php app/console doctrine:mapping:import MyMainBundle annotation --path="./src"

3

import之后使用convert将yaml转换为实体注释:

php bin/console doctrine:mapping:convert annotation src

请运行--help以获取更多信息。

要强制覆盖实体文件,请使用--force选项。

要创建访问器(获取器和设置器),请使用

php bin/console doctrine:generate:entities yourBundle

不要忘记检查yml文件是否会覆盖注释更改的行为...

祝好


2

--path不是doctrine:mapping:import命令的选项。


现在是可以了。至少在版本4.0.11中是这样的。在某些情况下,甚至是必须的。如果你省略它,就会出现一个错误: 当传递命名空间时(例如--path=src),需要使用--path选项。如果您打算传递bundle名称,请检查拼写。 - automatix

0

之后:

php bin/console doctrine:mapping:import YourBundle yml

使用:

php bin/console doctrine:generate:entities YourBundle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接