Doctrine Association错误:注意:未定义的索引:在Doctrine / ORM / Persisters / BasicEntityPersister.php第685行中的id

时间:2014-12-17 19:57:32

标签: php symfony orm doctrine-orm doctrine

我使用Doctrine v2.4.6(Symphony,如果这很重要)来处理一个复杂的项目。我遇到的问题是运行导入程序(每个文件最多处理200k行,多个文件)。我的实体是这样的:

Person
- id
- name

Address
- idaddress
- person (many-to-one Person)
- type (many-to-one Type)
- Address

Phone
- idphone
- person (many-to-one Person)
- type (many-to-one Type)
- phone

Type
- idtype
- description

(实体用XML映射)

因此,导入器进程一次读取一个文件(每个文件包含一种实体,如Person.csv,Address.csv等)并创建实体,然后存储在APCCache中。到目前为止,无法访问数据库。 第二步是按正确的顺序处理这些实体(第一个人,然后是地址,然后是电话等)。在此过程中,我检查数据库以查看它是更新还是插入。之后,我检查所有关系是否包含在EntityManager中(因为它们被缓存在APC中,诸如Type之类的关系可能会分离并且Doctrine会尝试插入它们)。然后我坚持对象,最后我冲洗对象,即$om->flush($object)

99%的时间可以使用,但随机手机会抛出此错误: 注意:未定义的索引:在Doctrine / ORM / Persisters / BasicEntityPersister.php第685行中的id。

当Doctrine尝试查找对象Person的关联信息时,错误会上升。在UnitOfWork中挖掘时,我注意到$uow->entityIdentifiers[spl_object_hash($person)]的内容包含Type而不是Person的关联信息。

我真的不知道我在这里做错了什么。特别是因为它在大多数时间都有效,并且违规实体因运行而异。

我应该寻找什么?

谢谢!

0 个答案:

没有答案