symfony - servicios - Obtener nombre de entidad de objeto de clase
symfony services (3)
Esto siempre debería funcionar (sin retorno de clase Proxy):
$em = $this->container->get(''doctrine'')->getEntityManager();
$className = $em->getClassMetadata(get_class($object))->getName();
Como getClassMetadata
está en desuso, ahora puede usar getMetadataFor
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($object))->getName();
Tengo el siguiente código:
namespace Acme/StoreBundle/Entity;
use Doctrine/ORM/Mapping as ORM;
/**
* Acme/StoreBundle/Entity/User
*
* @ORM/Table(name="users")
* @ORM/Entity()
*/
class User {
...
}
$user = new User();
¿Alguien sabe cómo puedo obtener el nombre de la entidad ( AcmeStoreBundle:User
) del objeto User
?
La función PHP get_class()
devolverá User
y espacio de nombres (vea los comentarios en documentos php).
getClassMetadata () está en desuso y se eliminará en el futuro. Utilice getMetadataFor () en su lugar:
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
O una función completa:
/**
* 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;
}