From d9767a501f14ca72386d50d4858f607a7a16831d Mon Sep 17 00:00:00 2001 From: Ahmed Date: Tue, 22 Apr 2014 01:52:45 +0200 Subject: [PATCH] Get ambiguous entity identifier Regardless the field name is, transformer would still be able to get the identifier value --- .../EntityToIdentifierTransformer.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/DataTransformer/EntityToIdentifierTransformer.php b/DataTransformer/EntityToIdentifierTransformer.php index 7da397c..330a382 100644 --- a/DataTransformer/EntityToIdentifierTransformer.php +++ b/DataTransformer/EntityToIdentifierTransformer.php @@ -30,17 +30,23 @@ public function __construct(ObjectManager $om) } /** - * If the passed argument is a valid entity return the id, else return empty string + * If the passed argument is a valid entity where {identifier} !== null, else return empty string * @param mixed $entity * @return integer|string */ public function transform($entity) { - if (is_null($entity) || !is_object($entity) || !method_exists($entity, 'getId')) { + if (is_null($entity) || !is_object($entity)) { return ''; } - - return $entity->getId(); + + $meta = $this->om->getClassMetadata(get_class($entity)); + $identifier = current($meta->getIdentifierValues($entity)); + if($identifier === null) { + return ''; + } + + return $identifier; } /** @@ -77,4 +83,4 @@ public function setEntityRepository($entityRepository) $this->entityRepository = $entityRepository; } -} \ No newline at end of file +}