क्या यह निर्धारित करने का कोई तरीका है कि पैरामीटर एक ऑब्जेक्ट है जो पहले से ही सिद्धांत द्वारा जारी है या नहीं? एक इकाई प्रबंधक विधि की तरह कुछ जो जांच करता है कि कोई वस्तु एक पुरानी पुरानी वस्तु नहीं है लेकिन वास्तव में स्मृति में पहले से ही कुछ है।यह निर्धारित करने के लिए कि कोई सिद्धांत इकाई जारी है या नहीं?
$isPersisted = \Doctrine\ORM\UnitOfWork::STATE_MANAGED === $entityManager->getUnitOfWork()->getEntityState($entity);
संपादित करें: @Andrew एटकिंसन के कहे अनुसार, ऐसा लगता है EntityManager->contains($entity)
अब पसंदीदा तरीका है
<?php
public function updateStatus(Entity $entity, EntityStatus $entityStatus)
{
$entityManager = $this->getEntityManager();
try {
// checking persisted entity
if (!$entityManager->isPersisted($entity)) {
throw new InvalidArgumentException('Entity is not persisted');
}
// ...
} catch (InvalidArgumentException $e) {
}
}
यूनिटऑफवर्क को @internal चिह्नित किया गया है। इसका आमतौर पर मतलब है कि आपको उपयोग को हटाने या इसे अन्य निर्माण के साथ बदलने की सलाह दी जाती है। 'EntityManager-> का उपयोग करना ($ इकाई)' को प्राथमिकता दी जानी चाहिए –