密钥在Doctrine 2的getScheduledEntityUpdates()函数返回的数组中表示什么?

时间:2013-03-25 18:01:42

标签: doctrine-orm unit-of-work

在Doctrine 2中,UnitOfWork对象有一个getScheduledEntityUpdates方法,该方法返回计划更新的所有实体的数组。这个数组的键似乎是巨大的十六进制数字,如[000000000fa3298000000000d03645f6]。这些键代表什么?

1 个答案:

答案 0 :(得分:0)

这些键是the identity map in the unit of work中存储的对象的对象哈希值。

您可以使用spl_object_hash

获取对象的对象哈希值
$object = new \stdClass();

var_dump(spl_object_hash($object));

出于性能原因,ORM会保留所有对象哈希值和实体标识符(哈希值)的列表。例如,多次调用$em->persist($object)不会导致任何操作,因为$object很快就会looked up in the identity map

此外,如果您多次致电$em->find('My\Entity', 123)the identity map is used to find objects that are already in memory