[+BUGFIX] Persistence: Fixed building unionStatement from opposite
authorMarc Bastian Heinrichs <heinrichs@mbh-web.de>
Sun, 20 Mar 2011 23:14:17 +0000 (00:14 +0100)
committerSebastian Kurfuerst <sebastian@typo3.org>
Mon, 16 May 2011 07:13:14 +0000 (09:13 +0200)
In function
Tx_Extbase_Persistence_Storage_Typo3DbBackend::addUnionStatement
the values "uid_local" and "uid_foreign" are hardcoded. For building
the query from the opposite side (MM_opposite_field is set), these
values have to be reversed. Thanks to Christian Zindel.

Fixes: #13782

Change-Id: I1230b9e8c567b7b038e3c9401af2e0178e566a81

typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php

index 6561622..225be37 100644 (file)
@@ -687,8 +687,8 @@ class Tx_Extbase_Persistence_Storage_Typo3DbBackend implements Tx_Extbase_Persis
                        $className = $this->dataMapper->getType($className, $propertyName);
                } elseif ($columnMap->getTypeOfRelation() === Tx_Extbase_Persistence_Mapper_ColumnMap::RELATION_HAS_AND_BELONGS_TO_MANY) {
                        $relationTableName = $columnMap->getRelationTableName();
-                       $sql['unions'][$relationTableName] = 'LEFT JOIN ' . $relationTableName . ' ON ' . $tableName . '.uid=' . $relationTableName . '.uid_local';
-                       $sql['unions'][$childTableName] = 'LEFT JOIN ' . $childTableName . ' ON ' . $relationTableName . '.uid_foreign=' . $childTableName . '.uid';
+                       $sql['unions'][$relationTableName] = 'LEFT JOIN ' . $relationTableName . ' ON ' . $tableName . '.uid=' . $relationTableName . '.' . $columnMap->getParentKeyFieldName();
+                       $sql['unions'][$childTableName] = 'LEFT JOIN ' . $childTableName . ' ON ' . $relationTableName . '.'.  $columnMap->getChildKeyFieldName() . '=' . $childTableName . '.uid';
                        $className = $this->dataMapper->getType($className, $propertyName);
                } else {
                        throw new Tx_Extbase_Persistence_Exception('Could not determine type of relation.', 1252502725);