Source for file View.php

Documentation is available at View.php

  1. <?php
  2. /*
  3.  *  $Id: View.php 1080 2007-02-10 18:17:08Z romanb $
  4.  *
  5.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  6.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  7.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  8.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  9.  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  10.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  11.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  12.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  13.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  14.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  15.  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  16.  *
  17.  * This software consists of voluntary contributions made by many individuals
  18.  * and is licensed under the LGPL. For more information, see
  19.  * <http://www.phpdoctrine.com>.
  20.  */
  21. /**
  22.  * Doctrine_View
  23.  *
  24.  * this class represents a database view
  25.  *
  26.  * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
  27.  * @package     Doctrine
  28.  * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
  29.  * @category    Object Relational Mapping
  30.  * @link        www.phpdoctrine.com
  31.  * @since       1.0
  32.  * @version     $Revision: 1080 $
  33.  */
  34. {
  35.     /**
  36.      * SQL DROP constant
  37.      */
  38.     const DROP   'DROP VIEW %s';
  39.     /**
  40.      * SQL CREATE constant
  41.      */
  42.     const CREATE 'CREATE VIEW %s AS %s';
  43.     /**
  44.      * SQL SELECT constant
  45.      */
  46.     const SELECT 'SELECT * FROM %s';
  47.  
  48.     /**
  49.      * @var string $name                the name of the view
  50.      */
  51.     protected $name;
  52.     /**
  53.      * @var Doctrine_Query $query       the DQL query object this view is hooked into
  54.      */
  55.     protected $query;
  56.     /**
  57.      * @var Doctrine_Connection $conn   the connection object
  58.      */
  59.     protected $conn;
  60.  
  61.     /**
  62.      * constructor
  63.      *
  64.      * @param Doctrine_Query $query 
  65.      */
  66.     public function __construct(Doctrine_Query $query$viewName)
  67.     {
  68.         $this->name  = $viewName;
  69.         $this->query = $query;
  70.         $this->query->setView($this);
  71.         $this->conn   = $query->getConnection();
  72.     }
  73.     /**
  74.      * getQuery
  75.      * returns the associated query object
  76.      *
  77.      * @return Doctrine_Query 
  78.      */
  79.     public function getQuery()
  80.     {
  81.         return $this->query;
  82.     }
  83.     /**
  84.      * getName
  85.      * returns the name of this view
  86.      *
  87.      * @return string 
  88.      */
  89.     public function getName()
  90.     {
  91.         return $this->name;
  92.     }
  93.     /**
  94.      * getConnection
  95.      * returns the connection object
  96.      *
  97.      * @return Doctrine_Connection 
  98.      */
  99.     public function getConnection()
  100.     {
  101.         return $this->conn;
  102.     }
  103.     /**
  104.      * create
  105.      * creates this view
  106.      *
  107.      * @throws Doctrine_View_Exception
  108.      * @return void 
  109.      */
  110.     public function create()
  111.     {
  112.         $sql sprintf(self::CREATE$this->name$this->query->getQuery());
  113.         try {
  114.             $this->conn->execute($sql);
  115.         catch(Doctrine_Exception $e{
  116.             throw new Doctrine_View_Exception($e->__toString());
  117.         }
  118.     }
  119.     /**
  120.      * drop
  121.      * drops this view from the database
  122.      *
  123.      * @throws Doctrine_View_Exception
  124.      * @return void 
  125.      */
  126.     public function drop()
  127.     {
  128.         try {
  129.             $this->conn->execute(sprintf(self::DROP$this->name));
  130.         catch(Doctrine_Exception $e{
  131.             throw new Doctrine_View_Exception($e->__toString());
  132.         }
  133.     }
  134.     /**
  135.      * execute
  136.      * executes the view
  137.      * returns a collection of Doctrine_Record objects
  138.      *
  139.      * @return Doctrine_Collection 
  140.      */
  141.     public function execute()
  142.     {
  143.         return $this->query->execute();
  144.     }
  145.     /**
  146.      * getSelectSql
  147.      * returns the select sql for this view
  148.      *
  149.      * @return string 
  150.      */
  151.     public function getSelectSql()
  152.     {
  153.         return sprintf(self::SELECT$this->name);
  154.     }
  155. }