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

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

我有一个包含 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/

相关文章:

Symfony 3.4.0 找不到任何要加载的 fixture 服务

javascript - three.js 如何缓存(本地存储)3d 模型和纹理?

php - 在 SQL 中使用 PHP 变量

Javascript看不到2个textarea id之间的区别

zend-framework - 关于存储库的域驱动设计问题

php - 在 Symfony2 Doctrine findBy() 中保留数组的初始顺序

php - 如何正确地将父PHP与嵌入式PHP通信?

php - 我如何转义 .ini 文件中的换行符,以便 Zend_Config_Ini 按字面意义读取它?

php - eclipse PHP Zend : "workspace in use" when i try to set my workspace in Apache2/htdocs?

mysql - 使用 Doctrine 统计关联实体时如何避免大量查询?