From c82794bff79009ee67974eed0b670b8d76e646d1 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sat, 17 Jan 2015 04:09:14 +0100 Subject: [PATCH] #1178 - handling traversal of association mapping data in lazy-loading many-to-many requests on the inverse side --- lib/Doctrine/ORM/Utility/PersisterHelper.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ORM/Utility/PersisterHelper.php b/lib/Doctrine/ORM/Utility/PersisterHelper.php index 28b7748ed..ded5e9ca0 100644 --- a/lib/Doctrine/ORM/Utility/PersisterHelper.php +++ b/lib/Doctrine/ORM/Utility/PersisterHelper.php @@ -92,11 +92,21 @@ class PersisterHelper $assoc = $class->associationMappings[$fieldName]; - if (count($assoc['sourceToTargetKeyColumns']) > 1) { + if (! $assoc['isOwningSide']) { + return self::getTypeOfField($assoc['mappedBy'], $em->getClassMetadata($assoc['targetEntity']), $em); + } + + if (($assoc['type'] & ClassMetadata::MANY_TO_MANY) > 0) { + $joinData = $assoc['joinTable']; + } else { + $joinData = $assoc; + } + + if (count($joinData['joinColumns']) > 1) { throw QueryException::associationPathCompositeKeyNotSupported(); } - $targetColumnName = $assoc['joinColumns'][0]['referencedColumnName']; + $targetColumnName = $joinData['joinColumns'][0]['referencedColumnName']; $targetClass = $em->getClassMetadata($assoc['targetEntity']); return self::getTypeOfColumn($targetColumnName, $targetClass, $em);