Bläddra i källkod

ZF-2798
- Added the ability to get a select object from Zend_Db_Table with from part loaded

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

ralph 16 år sedan
förälder
incheckning
b2677edab1
2 ändrade filer med 42 tillägg och 2 borttagningar
  1. 7 2
      library/Zend/Db/Table/Abstract.php
  2. 35 0
      tests/Zend/Db/Table/Select/TestCommon.php

+ 7 - 2
library/Zend/Db/Table/Abstract.php

@@ -904,12 +904,17 @@ abstract class Zend_Db_Table_Abstract
     /**
      * Returns an instance of a Zend_Db_Table_Select object.
      *
+     * @param bool $withFromPart Whether or not to include the from part of the select based on the table
      * @return Zend_Db_Table_Select
      */
-    public function select()
+    public function select($withFromPart = false)
     {
         require_once 'Zend/Db/Table/Select.php';
-        return new Zend_Db_Table_Select($this);
+        $select = new Zend_Db_Table_Select($this);
+        if ($withFromPart == true) {
+            $select->from($this->info(self::NAME), Zend_Db_Table_Select::SQL_WILDCARD, $this->info(self::SCHEMA));
+        }
+        return $select;
     }
 
     /**

+ 35 - 0
tests/Zend/Db/Table/Select/TestCommon.php

@@ -68,6 +68,8 @@ abstract class Zend_Db_Table_Select_TestCommon extends Zend_Db_Select_TestCommon
 
     /**
      * Get a Zend_Db_Table to provide the base select()
+     * 
+     * @return Zend_Db_Table_Abstract
      */
     protected function _getSelectTable($table)
     {
@@ -196,6 +198,39 @@ abstract class Zend_Db_Table_Select_TestCommon extends Zend_Db_Select_TestCommon
 
         $this->assertType('Zend_Db_Table_TableProducts', $select->getTable());
     }
+    
+    /**
+     * @group ZF-2798
+     */
+    public function testTableWillReturnSelectObjectWithFromPart()
+    {
+        $table = $this->_getSelectTable('accounts');
+        $select1 = $table->select();
+        $this->assertEquals(0, count($select1->getPart(Zend_Db_Table_Select::FROM)));
+        $this->assertEquals(0, count($select1->getPart(Zend_Db_Table_Select::COLUMNS)));
+        
+        $select2 = $table->select(true);
+        $this->assertEquals(1, count($select2->getPart(Zend_Db_Table_Select::FROM)));
+        $this->assertEquals(1, count($select2->getPart(Zend_Db_Table_Select::COLUMNS)));
+        
+        $this->assertEquals($select1->__toString(), $select2->__toString());
+        
+        $select3 = $table->select();
+        $select3->setIntegrityCheck(false);
+        $select3->joinLeft('tableB', 'tableA.id=tableB.id');
+        $select3Text = $select3->__toString();
+        $this->assertNotContains('zfaccounts', $select3Text);
+        echo $select3Text;
+        
+        $select4 = $table->select(true);
+        $select4->setIntegrityCheck(false);
+        $select4->joinLeft('tableB', 'tableA.id=tableB.id');
+        $select4Text = $select4->__toString();
+        $this->assertContains('zfaccounts', $select4Text);
+        $this->assertContains('tableA', $select4Text);
+        $this->assertContains('tableB', $select4Text);
+        echo $select4Text;
+    }
 
     // ZF-3239
 //    public function testFromPartIsAvailableRightAfterInstantiation()