Doctrine 2和Zend 1.11转换映射错误..

时间:2011-07-28 19:48:45

标签: php zend-framework doctrine doctrine-orm zend-db

我有一个复杂的数据库设计,包含视图,关系等。我们决定从标准的Zend_db切换到ORM。我成功地整合了zend 1.11和doctrine 2.1。所有教程都解释了如何通过手写类创建整个数据库。但是现有数据库中有数据呢?我再次搜索并发现我必须使用以下命令

php orm:convert-mapping --from-database php path/where/you/want/to/store/mapping/classes

当我为一个只有3个表且没有任何关系的简单数据库执行此操作时,上述命令可以很好地工作。

但是当我尝试在我的数据库上使用相同的命令时,会抛出一个异常

[Doctrine\ORM\Mapping\MappingException]

Property "employeeid" in "Organization_has_employees" was already declared, but it must be
declared only once

我更改了所有字段名称,以便在任何表格中都没有重复的名称,但仍然没有运气。

请帮我解决这个问题。我打扰了3天多。

KARTHIK

1 个答案:

答案 0 :(得分:12)

经过几个小时的实验,我发现了问题所在。显然,它不是在Doctrine中,而是我设计的数据库。当您在MySQL Workbenck中执行“多对多”表时,您将被迫执行“识别关系”,这将创建另一个表并从父表创建组合键。请确保以不同方式命名此主键,或者如果可能,请删除复合键并将其仅作为非标识关系。添加另一个名为id的列,并将此字段作为主键并自动编号

Doctrine工具也存在缓存问题,因此请确保每次进行更改时重命名数据库并在zend配置中进行更改。

希望这有助于那里的人。如果您仍有问题,请在此处发布您的问题我将能够回答。