Selaa lähdekoodia

ZF-3309: Make Zend_Db_Select respect table aliases

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24755 44c647ce-9c0f-0410-b52a-842ac1e357ba
adamlundrigan 13 vuotta sitten
vanhempi
commit
5e47a97273
2 muutettua tiedostoa jossa 30 lisäystä ja 1 poistoa
  1. 2 1
      library/Zend/Db/Select.php
  2. 28 0
      tests/Zend/Db/Select/TestCommon.php

+ 2 - 1
library/Zend/Db/Select.php

@@ -896,7 +896,8 @@ class Zend_Db_Select
     private function _uniqueCorrelation($name)
     {
         if (is_array($name)) {
-            $c = end($name);
+            $k = key($name);
+            $c = is_string($k) ? $k : end($name);
         } else {
             // Extract just the last name of a qualified table name
             $dot = strrpos($name,'.');

+ 28 - 0
tests/Zend/Db/Select/TestCommon.php

@@ -1711,4 +1711,32 @@ abstract class Zend_Db_Select_TestCommon extends Zend_Db_TestSetup
         $this->assertContains("JOIN {$table_B} ON {$table_B}.{$colname} = {$table_A}.{$colname}", $s->assemble());
     }
 
+    /**
+     * @group ZF-3309
+     */
+    public function testJoinUsingUsesTableNameOfTableBeingJoinedWhenAliasNotDefined()
+    {
+        $table1 = $this->_db->quoteTableAs('table1');
+        $table2 = $this->_db->quoteTableAs('table2');
+        $colname = $this->_db->quoteIdentifier('column1');
+        
+        $select = $this->_db->select();
+        $select->from('table1')->joinUsing('table2', $colname);
+        $this->assertRegexp("/ON {$table2}.{$colname}/s", $select->assemble());
+    }
+    
+    /**
+     * @group ZF-3309
+     */
+    public function testJoinUsingUsesAliasOfTableBeingJoinedWhenAliasIsDefined()
+    {
+        $table1 = $this->_db->quoteTableAs('table1');
+        $table2_alias = $this->_db->quoteTableAs('t2');
+        $colname = $this->_db->quoteIdentifier('column1');
+        
+        $select = $this->_db->select();
+        $select->from('table1')->joinUsing(array('t2'=>'table2'), $colname);
+        $this->assertRegexp("/ON {$table2_alias}.{$colname}/s", $select->assemble());
+    }    
+    
 }