我有一个包含 View 、关系等的复杂数据库设计。我们决定从标准 Zend_db 切换到 ORM。我成功地集成了 zend 1.11 和 doctrine 2.1。那里的所有教程都解释了如何通过手写类(class)创建整个数据库。但是已经存在的包含数据的数据库呢?我再次搜索并发现我必须使用以下命令
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 天多了。
卡尔提克
最佳答案
经过几个小时的实验,我发现了问题所在。显然它不在 Doctrine 中,它是我设计的数据库。当您在 MySQL Workbenck 中执行多对多表时,您被迫执行识别关系,这会创建另一个表并从父表创建复合键。请确保您以不同的方式命名此主键,或者如果可能,删除组合键并将其作为非标识关系。添加另一个名为 id 的列,并将此字段作为主键和自动编号
Doctrine 工具也有缓存问题,所以请确保每次更改时都重命名数据库,并在 zend 配置中进行更改。
希望这对那里的人有所帮助。如果您仍然有问题,请在这里发布您的问题,我将能够回答。
关于php - Doctrine 2 和 Zend 1.11 转换映射错误..,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864755/