Get entity name from class object
This should always work (no return of Proxy class):
$em = $this->container->get('doctrine')->getEntityManager();
$className = $em->getClassMetadata(get_class($object))->getName();
As getClassMetadata
is deprecated, you can now use getMetadataFor
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($object))->getName();
PHP get_class()
function will return User
and namespace (see comments in php docs).
getClassMetadata() is deprecated and will be removed in the future. Use getMetadataFor() instead:
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
Or a complete function:
/**
* Returns Doctrine entity name
*
* @param mixed $entity
*
* @return string
* @throws \Exception
*/
private function getEntityName($entity)
{
try {
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
} catch (MappingException $e) {
throw new \Exception('Given object ' . get_class($entity) . ' is not a Doctrine Entity. ');
}
return $entityName;
}