[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pear-cvs
Subject:    [PEAR-CVS] =?utf-8?q?svn:_/pear/packages/DB=5FDataObject/trunk/_DataObject.php?=
From:       Alan_Knowles <alan_k () php ! net>
Date:       2010-03-30 1:56:25
Message-ID: svn-alan_k-1269914185-297118-319423235 () svn ! php ! net
[Download RAW message or body]

alan_k                                   Tue, 30 Mar 2010 01:56:25 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=297118

Log:
more fixes to Req #7590 - union support - thanks to Ian Carmichael

Bug: http://pear.php.net/bugs/7590 (unknown) 
      
Changed paths:
    U   pear/packages/DB_DataObject/trunk/DataObject.php

Modified: pear/packages/DB_DataObject/trunk/DataObject.php
===================================================================
--- pear/packages/DB_DataObject/trunk/DataObject.php	2010-03-30 00:07:44 UTC (rev \
                297117)
+++ pear/packages/DB_DataObject/trunk/DataObject.php	2010-03-30 01:56:25 UTC (rev \
297118) @@ -387,8 +387,9 @@
             $this->_query['data_select'] . " \n" .
             ' FROM ' . ($quoteIdentifiers ? $DB->quoteIdentifier($this->__table) : \
$this->__table) . " \n" .  $this->_join . " \n" .
-            $this->_query['condition'] . " \n" ;
-
+            $this->_query['condition'] . " \n" .
+            $this->_query['group_by'] . " \n" .
+            $this->_query['having'] . " \n";

         return $sql;
     }
@@ -440,19 +441,17 @@
         $this->_connect();
         $DB = &$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5];

-        /* We are checking for method modifyLimitQuery as it is PEAR DB specific */
+
         $sql = $this->_build_select();

         foreach ($this->_query['unions'] as $union_ar) {
-            $sql .= " UNION " . $union_ar[1] .   $union_ar[0]->_buildSelect() . " \
\n"; +            $sql .=   $union_ar[1] .   $union_ar[0]->_buildSelect() . " \n";
         }

-        $sql .=  $this->_query['group_by']  . " \n" .
-            $this->_query['having']    . " \n" .
-            $this->_query['order_by']  . " \n";
+        $sql .=  $this->_query['order_by']  . " \n";


-
+        /* We are checking for method modifyLimitQuery as it is PEAR DB specific */
         if ((!isset($_DB_DATAOBJECT['CONFIG']['db_driver'])) ||
             ($_DB_DATAOBJECT['CONFIG']['db_driver'] == 'DB')) {
             /* PEAR DB specific */
@@ -3271,21 +3270,22 @@
      /**
      * unionAdd - adds another dataobject to this, building a unioned query.
      *
-     * usage: (Needs a better example..)
-     * $do1 = DB_DataObject::factory("table1");
-     * $do2 = DB_DataObject::factory("table2");
+     * usage:
+     * $doTable1 = DB_DataObject::factory("table1");
+     * $doTable2 = DB_DataObject::factory("table2");
      *
-     * $do2->selectAdd();
-     * $do2->selectAdd("id");
-     * $do2->whereAdd("id < 100");
+     * $doTable1->selectAdd();
+     * $doTable1->selectAdd("col1,col2");
+     * $doTable1->whereAdd("col1 > 100");
+     * $doTable1->orderBy("col1");
+     *
+     * $doTable2->selectAdd();
+     * $doTable2->selectAdd("col1, col2");
+     * $doTable2->whereAdd("col2 = 'v'");
      *
-     * $do1->unionAdd($do2);
-     * $do1->selectAdd();
-     * $do1->selectAdd("id");
-     * $do1->whereAdd("id > 100");
-     * $do1->orderBy("id");
-     * $do1->find();
-     *
+     * $doTable1->unionAdd($doTable2);
+     * $doTable1->find();
+      *
      * Note: this model may be a better way to implement joinAdd?, eg. do the \
                building in find?
      *
      *
@@ -3301,7 +3301,7 @@
             $this->_query['unions'] = array();
             return $ret;
         }
-        $this->_query['unions'][] = array($obj, 'UNION ' . $is_all) ;
+        $this->_query['unions'][] = array($obj, 'UNION ' . $is_all . ' ') ;
         return $obj;
     }



-- 
PEAR CVS Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic