Doctrine异常 - [Doctrine ORM Mapping MappingException]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Doctrine异常 - [Doctrine ORM Mapping MappingException]相关的知识,希望对你有一定的参考价值。

嗨,我是symfony的新手。

我正在尝试使用doctrine从现有数据库生成实体。当我运行此命令时:

php bin/console doctrine:mapping:import --force AppBundle xml

我得到这个例外:

[学说 ORM 映射 MappingException] “Bug”中的属性“shop”已经声明,但必须只声明一次

我试图寻找其他解决方案,但我没有找到任何解决方案。我怎么解决这个问题?

这就是mysql workbench创建我的表的方式:

CREATE TABLE IF NOT EXISTS `db`.`bug` (
`id_bug` INT(11) NOT NULL AUTO_INCREMENT,
`bug_name` VARCHAR(200) NOT NULL,
`comment` VARCHAR(1000) NOT NULL,
`status` INT(11) NOT NULL DEFAULT '0',
`customer_id` VARCHAR(255) CHARACTER SET 'utf8' NOT NULL,
`shop_id` VARCHAR(255) CHARACTER SET 'utf8' NOT NULL,
`admin_id` VARCHAR(255) CHARACTER SET 'utf8' NOT NULL,
 PRIMARY KEY (`id_bug`),
 INDEX `fk_bug_customer1_idx1` (`customer_id` ASC),
 INDEX `fk_bug_shop1_idx` (`shop_id` ASC),
 INDEX `fk_bug_admin1_idx1` (`admin_id` ASC),
 CONSTRAINT `fk_bug_customer1`
 FOREIGN KEY (`customer_id`)
 REFERENCES `db`.`customer` (`id`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION,
 CONSTRAINT `fk_bug_shop1`
 FOREIGN KEY (`shop_id`)
 REFERENCES `db`.`shop` (`id`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION,
 CONSTRAINT `fk_bug_admin1`
 FOREIGN KEY (`admin_id`)
 REFERENCES `db`.`admin` (`id`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION)
 ENGINE = InnoDB
 DEFAULT CHARACTER SET = latin1;

我在symfony 3.3,mysql和php7工作。

谢谢。

答案

有两个问题:

  1. 首先,在同一实体上存在重复的关系
  2. 这不是唯一的问题。我们注意到,当主键也是外键时,doctrine会出现问题,因此我们为主键添加了一个新的字段id。

以上是关于Doctrine异常 - [Doctrine ORM Mapping MappingException]的主要内容,如果未能解决你的问题,请参考以下文章

在 Doctrine2 上找不到实体异常

Zend2 框架 - 给映射异常的 Doctrine ORM

在 Codeigniter 中捕获 Doctrine 异常的最佳方法

Symfony 2 + Doctrine 2 + PHPUnit 3.5:闭包异常的序列化

在 Symfony2 中使用 Doctrine 映射异常错误

Symfony & Doctrine InnerJoin