我有一个复杂的数据库设计,包含视图,关系等。我们决定从标准的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
答案 0 :(得分:12)
经过几个小时的实验,我发现了问题所在。显然,它不是在Doctrine中,而是我设计的数据库。当您在MySQL Workbenck中执行“多对多”表时,您将被迫执行“识别关系”,这将创建另一个表并从父表创建组合键。请确保以不同方式命名此主键,或者如果可能,请删除复合键并将其仅作为非标识关系。添加另一个名为id的列,并将此字段作为主键并自动编号
Doctrine工具也存在缓存问题,因此请确保每次进行更改时重命名数据库并在zend配置中进行更改。
希望这有助于那里的人。如果您仍有问题,请在此处发布您的问题我将能够回答。