ORMを使用して挿入/永続操作が成功した後、Doctrineはエンティティのidプロパティをどのように設定しますか?
$timer = new Timer(); //an object marked as a Doctrine Entity
$this->em->persist($timer);
print $timer->getId(); //blank - not yet set
$this->em->flush($timer);
print $timer->getId(); //prints ID of newly inserted record
実際のORMコード(教義)
public function persist($entity)
{
if (! is_object($entity)) {
throw ORMInvalidArgumentException::invalidObject('EntityManager#persist()' , $entity);
}
$this->errorIfClosed();
$this->unitOfWork->persist($entity);
}
質問 ORMのコードは、上記の持っているときDoctrineは、Entity
にinsert_id
を挿入しない方法
「参照渡し」指令はありませんか?
I.e.エンティティはpersist
プロセス中(insert_id
で)変更されることを示すために
public function persist(&$entity)
{
...
}
:通常私はこのような何かを期待したいです。しかし、この種のものはありません。それにもかかわらず、Entity
にはinsert_id
が魔法のように設定されています。
これはどのように起こりますか?