doctrine:mapping:convert和doctrine:mapping:import的区别

5
我想为我的Symfony应用程序从数据库生成实体类。因此,我按照以下三个步骤进行操作(来自如何从现有数据库生成实体):
 1. php app/console doctrine:mapping:convert yml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force

 2. php app/console doctrine:mapping:import AcmeBlogBundle yml

 3. php app/console doctrine:generate:entities AcmeBlogBundle

为了了解这三个命令的工作原理,我刚刚从./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm中删除了所有文件。我在一个表中添加了一个字段。之后,我遵循了命令2和命令3。
我检查了修改后的表格实体中的新字段。该实体中存在新字段。
那么,为什么我们要使用doctrine:mapping:convert命令从现有数据库生成实体?

3
我认为Symfony社区支持不够好。 - Mohammed H
我没有得到很好的解释。为了不丢分,我把分数给那些试图为我澄清问题的人。 - Mohammed H
3个回答

6
我不太明白你们在说什么,因为对我来说这三个命令是必须的,而且它们之间有所不同。如果您想检查DB模式以生成所需的Symfony ORM文件和实体,则必须使用三个命令。以下是它们的作用: 1)
php app/console doctrine:mapping:convert yml ./src/< vendor>/< bundle_name>/Resources/config/doctrine/metadata/orm --from-database --force

这个功能通过内省从数据库构建实体映射文件。对于数据库中的每个表,它只会生成一个 <entity>.orm.yml 文件:

< proj_folder>/src/< vendor>/< bundle_name>/Resources/config/doctrine/metadata/orm/< entity>.orm.yml

2)

php app/console doctrine:mapping:import < vendor>< bundle_name> annotation**

为从数据库中反射出的每个表生成实体类:

输出:正在写入 /var/www/html/< project_folder>/src/< vendor>/< bundle_name>/Entity/< entity>.php

3)

php app/console doctrine:generate:entities < vendor>< nameBundle>**

这只会为所有实体类属性生成getter和setter。


4

这是真的。mapping:convert不解析命名空间,而mapping:import则会。就我所观察到的,这是唯一的区别。但是我尝试了步骤2和步骤3,没有运行步骤1,它生成实体而没有任何错误。我认为步骤1和步骤2是独立的。因为在步骤1中,我们提供了路径信息,但在步骤2中没有提及该路径。那么步骤2如何知道步骤1生成的文件在哪里? - Mohammed H
你尝试过使用带有外键的模式吗?我认为这是必须的第一步,否则关系不完全合格,就无法正常工作。 - AlterPHP
在执行mapping:import之前,您是否删除了元数据文件?如果这很明显,请见谅.... :D - AlterPHP
我按照这三个步骤操作了,但是一些 .php 类并没有生成,尽管 orm.yml 和 orm.xml 已经生成了,有什么想法吗?谢谢! - Zennichimaro
你的实体都在同一个 bundle 中吗?如果不是,这些 bundle 是否由实体管理器映射? - AlterPHP

2
一旦您生成了实体类,Doctrine会自动获取所有必要的信息从实体类导入映射,而不需要在第一步中获取的类元数据。如果您删除了元数据和实体类,则无法在运行第二步之前运行第一步。请注意保留HTML标签。

我尝试着移除"MyBundle/Entity/"和"MyBundle/Resources/config/doctrine/",然后执行步骤2和步骤3。成功生成了类。我没有使用步骤1。 - Mohammed H

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