From 4d531d8855a7fe599ba1d1d2b8611260c02e264a Mon Sep 17 00:00:00 2001 From: Asmir Mustafic Date: Thu, 29 Jan 2015 22:48:34 +0100 Subject: [PATCH] Right type detection on to-many relations --- .../Entity/BasicEntityPersister.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php b/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php index a7c5a8d27..c5f56fc9f 100644 --- a/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php +++ b/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php @@ -1806,7 +1806,7 @@ class BasicEntityPersister implements EntityPersister continue; // skip null values. } - $types = array_merge($types, $this->getTypes($field, $value, $this->class)); + $types = array_merge($types, $this->getTypes($field, $value, $this->class)); $params = array_merge($params, $this->getValues($value)); } return array($params, $types); @@ -1860,24 +1860,17 @@ class BasicEntityPersister implements EntityPersister break; case (isset($class->associationMappings[$field])): $assoc = $class->associationMappings[$field]; - $class = $this->em->getClassMetadata($assoc['targetEntity']); if (!$assoc['isOwningSide']) { $assoc = $class->associationMappings[$assoc['mappedBy']]; $class = $this->em->getClassMetadata($assoc['targetEntity']); } - if ($assoc['type'] === ClassMetadata::MANY_TO_MANY) { - - foreach ($assoc['relationToSourceKeyColumns'] as $field => $val){ - $types = array_merge($types, PersisterHelper::getTypeOfField($val, $class, $this->em)); - } - - } else { - - foreach ($assoc['targetToSourceKeyColumns'] as $field => $val){ - $types = array_merge($types, PersisterHelper::getTypeOfField($field, $class, $this->em)); - } + $columns = $assoc['type'] === ClassMetadata::MANY_TO_MANY + ? $assoc['relationToTargetKeyColumns'] + : $assoc['sourceToTargetKeyColumns']; + foreach ($columns as $column){ + $types[] = PersisterHelper::getTypeOfColumn($column, $class, $this->em); } break;