yml servicios services register symfony doctrine-orm

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; }