Parcourir la source

ZF-5775
- Fixed issue with Zend_Db_Table_Abstract::find() returning all rows when empty parameters passed in

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

ralph il y a 16 ans
Parent
commit
0f013ccd45
2 fichiers modifiés avec 22 ajouts et 0 suppressions
  1. 9 0
      library/Zend/Db/Table/Abstract.php
  2. 13 0
      tests/Zend/Db/Table/TestCommon.php

+ 9 - 0
library/Zend/Db/Table/Abstract.php

@@ -1268,6 +1268,15 @@ abstract class Zend_Db_Table_Abstract
             $whereClause = '(' . implode(' OR ', $whereOrTerms) . ')';
         }
 
+        // issue ZF-5775 (empty where clause should return empty rowset)
+        if ($whereClause == null) {
+            if (!class_exists($this->_rowsetClass)) {
+                require_once 'Zend/Loader.php';
+                Zend_Loader::loadClass($this->_rowsetClass);
+            }
+            return new $this->_rowsetClass(array('table' => $this, 'rowClass' => $this->_rowClass, 'stored' => true));
+        }
+        
         return $this->fetchAll($whereClause);
     }
 

+ 13 - 0
tests/Zend/Db/Table/TestCommon.php

@@ -639,6 +639,19 @@ abstract class Zend_Db_Table_TestCommon extends Zend_Db_Table_TestSetup
         $this->assertEquals(3, count($rowset));
     }
     
+    /**
+     * 
+     * @group ZF-5775
+     */
+    public function testTableFindWithEmptyArray()
+    {
+        $table = $this->_table['products'];
+        $rowset = $table->find(array());
+        $this->assertType('Zend_Db_Table_Rowset_Abstract', $rowset,
+            'Expecting object of type Zend_Db_Table_Rowset_Abstract, got '.get_class($rowset));
+        $this->assertEquals(0, count($rowset));
+    }
+    
     public function testTableInsert()
     {
         $table = $this->_table['bugs'];