Mat*_*att 16 symfony doctrine-orm
我有以下代码:
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();
Run Code Online (Sandbox Code Playgroud)
有谁知道我现在如何AcmeStoreBundle:User从User对象中获取实体名称()?
ben*_*ske 46
这应该始终有效(不返回Proxy类):
$em = $this->container->get('doctrine')->getEntityManager();
$className = $em->getClassMetadata(get_class($object))->getName();
Run Code Online (Sandbox Code Playgroud)
由于getClassMetadata已被弃用,您现在可以使用getMetadataFor
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($object))->getName();
Run Code Online (Sandbox Code Playgroud)
PHP get_class()函数将返回User和命名空间(请参阅php docs中的注释).
不推荐使用getClassMetadata(),将来会删除它.改为使用getMetadataFor():
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
Run Code Online (Sandbox Code Playgroud)
或者完整的功能:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32411 次 |
| 最近记录: |