コード例 #1
0
 /**
  * Returns the identifier assigned to the given entity.
  *
  * {@inheritDoc}
  *
  * @throws \Doctrine\ORM\ORMException
  */
 public function generate(EntityManager $em, $entity)
 {
     $class = $em->getClassMetadata(get_class($entity));
     $idFields = $class->getIdentifierFieldNames();
     $identifier = array();
     foreach ($idFields as $idField) {
         $value = $class->getFieldValue($entity, $idField);
         if (!isset($value)) {
             throw ORMException::entityMissingAssignedIdForField($entity, $idField);
         }
         if (isset($class->associationMappings[$idField])) {
             // NOTE: Single Columns as associated identifiers only allowed - this constraint it is enforced.
             $value = $em->getUnitOfWork()->getSingleIdentifierValue($value);
         }
         $identifier[$idField] = $value;
     }
     return $identifier;
 }