如何解决如何在不知道名称的情况下获取Doctrine2实体标识符
| 我试图在我的Symfony2的基础Entity类上使用Doctrine2为数据库创建抽象的getId方法,该数据库的主键在表之间的名称不一致。 检查实体对象时,我看到有一个私有的'_identifier \'属性,其中包含我要检索的信息,但不确定如何正确访问它。 我假设有一些简单的教义魔术类似于:public function getId()
{
return $this->getIdentifier();
}
但是我还没有在任何地方的管上找到它。
解决方法
您可以通过
EntityManager#getClassMetadata()
访问此信息。一个示例如下所示:
// $em instanceof EntityManager
$meta = $em->getClassMetadata(get_class($entity));
$identifier = $meta->getSingleIdentifierFieldName();
如果您的实体具有复合主键,则需要改用$meta->getIdentifierFieldNames()
。当然,使用此方法,您将需要访问EntityManager
的实例,因此此代码通常放置在自定义存储库中,而不是实体本身。
希望能有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。