Doctrine 2では、UnitOfWorkオブジェクトにgetScheduledEntityUpdatesメソッドがあり、更新がスケジュールされているすべてのエンティティの配列を返します。この配列のキーは、のような巨大な16進数のよう[000000000fa3298000000000d03645f6]
です。これらのキーは何を表していますか?
質問する
79 次
1 に答える
0
これらのキーは、作業単位のIDマップに格納されているオブジェクトのオブジェクトハッシュです。
次を使用して、オブジェクトのオブジェクトハッシュを取得できますspl_object_hash
。
$object = new \stdClass();
var_dump(spl_object_hash($object));
ORMは、パフォーマンス上の理由から、すべてのオブジェクトハッシュとエンティティ識別子(ハッシュ)のリストを保持します。たとえば、IDマップで非常にすばやく検索されるため、$em->persist($object)
複数回呼び出しても操作は発生しません。$object
$em->find('My\Entity', 123)
また、複数回呼び出す場合は、IDマップを使用して、すでにメモリ内にあるオブジェクトを検索します。
于 2013-03-26T05:36:39.187 に答える