Bläddra i källkod

ZF-3701
- Fixed ManyToManyRowset search to only return columns of actual related row, no the intersection table

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21100 44c647ce-9c0f-0410-b52a-842ac1e357ba

ralph 16 år sedan
förälder
incheckning
87757a3c28

+ 1 - 1
library/Zend/Db/Table/Row/Abstract.php

@@ -1051,7 +1051,7 @@ abstract class Zend_Db_Table_Row_Abstract implements ArrayAccess
         }
         $joinCond = implode(' AND ', $joinCond);
 
-        $select->from(array('i' => $interName), Zend_Db_Select::SQL_WILDCARD, $interSchema)
+        $select->from(array('i' => $interName), array(), $interSchema)
                ->joinInner(array('m' => $matchName), $joinCond, Zend_Db_Select::SQL_WILDCARD, $matchSchema)
                ->setIntegrityCheck(false);
 

+ 22 - 0
tests/Zend/Db/Table/Relationships/TestCommon.php

@@ -1257,5 +1257,27 @@ abstract class Zend_Db_Table_Relationships_TestCommon extends Zend_Db_Table_Test
         $table = $this->_getTable('My_ZendDbTable_TableSpecial', $options);
         return $table;
     }
+    
+    /**
+     * Ensure that the related table returned from the ManyToManyRowset only contains
+     * the proper columns for the table.
+     * 
+     * @group ZF-3709
+     */
+    public function testTableRelationshipReturnsOnlyTheColumnsInTargetTable()
+    {
+        $table = $this->_table['bugs'];
+        $relatedTable = $this->_table['products'];
+        $relatedTableExpectedColumns = $relatedTable->info(Zend_Db_Table::COLS);
+
+        $row = $table->fetchRow('bug_id = 1');
+
+        $relatedRows = $row->findManyToManyRowset('My_ZendDbTable_TableProducts', 'My_ZendDbTable_TableBugsProducts');
+
+        foreach ($relatedRows as $relatedRow) {
+            $actualColumns = array_keys($relatedRow->toArray());
+            $this->assertEquals($relatedTableExpectedColumns, $actualColumns);
+        }
+    }
 
 }