QueryChain.class.php

Go to the documentation of this file.
00001 <?php
00002 /****************************************************************************
00003  *   Copyright (C) 2004-2008 by Konstantin V. Arkhipov, Anton E. Lebedevich *
00004  *                                                                          *
00005  *   This program is free software; you can redistribute it and/or modify   *
00006  *   it under the terms of the GNU Lesser General Public License as         *
00007  *   published by the Free Software Foundation; either version 3 of the     *
00008  *   License, or (at your option) any later version.                        *
00009  *                                                                          *
00010  ****************************************************************************/
00011 
00015     final class QueryChain extends SQLChain
00016     {
00017         public function toBoolean(Form $form)
00018         {
00019             throw new UnsupportedMethodException('get rid of useless interface');
00020         }
00021         
00025         public static function block($args, $logic)
00026         {
00027             $queryChain = new self;
00028             
00029             foreach ($args as $arg) {
00030                 if (!$arg instanceof SelectQuery)
00031                     throw new WrongArgumentException(
00032                         'unsupported object type: '.get_class($arg)
00033                     );
00034                 
00035                 $queryChain->exp($arg, $logic);
00036             }
00037             
00038             return $queryChain;
00039         }
00040         
00044         public function union(SelectQuery $query)
00045         {
00046             return $this->exp($query, CombineQuery::UNION);
00047         }
00048         
00052         public function unionAll(SelectQuery $query)
00053         {
00054             return $this->exp($query, CombineQuery::UNION_ALL);
00055         }
00056         
00060         public function intersect(SelectQuery $query)
00061         {
00062             return $this->exp($query, CombineQuery::INTERSECT);
00063         }
00064         
00068         public function intersectAll(SelectQuery $query)
00069         {
00070             return $this->exp($query, CombineQuery::INTERSECT_ALL);
00071         }
00072         
00076         public function except(SelectQuery $query)
00077         {
00078             return $this->exp($query, CombineQuery::EXCEPT);
00079         }
00080         
00084         public function exceptAll(SelectQuery $query)
00085         {
00086             return $this->exp($query, CombineQuery::EXCEPT_ALL);
00087         }
00088     }
00089 ?>