ORMWie füllt Doctrine ID-Eigenschaft einer Entität nach erfolgreicher Einfüge-/Persist-Operation?
$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
Actual ORM-Code (Lehre)
public function persist($entity)
{
if (! is_object($entity)) {
throw ORMInvalidArgumentException::invalidObject('EntityManager#persist()' , $entity);
}
$this->errorIfClosed();
$this->unitOfWork->persist($entity);
}
Frage
Wie Lehre insert_id
in die Entity
einfügt, wenn der Code über ORM hat keine "by reference" -Richtlinie?
I.e. Ich würde normalerweise so etwas wie dies erwartet:
public function persist(&$entity)
{
...
}
um anzuzeigen, dass das Unternehmen (mit insert_id
) während des persist
Prozesses geändert werden. Aber es gibt nichts dergleichen. Dennoch ist Entity
mit insert_id
magisch bevölkert.
Wie genau passiert das?