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