1<?php 2/* 3 * $Id$ 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.doctrine-project.org>. 20 */ 21 22/** 23 * Doctrine_Ticket_DC24_TestCase 24 * 25 * @package Doctrine 26 * @author Tomasz Jędrzejewski <http://www.zyxist.com/> 27 * @author Jacek Jędrzejewski <http://www.jacek.jedrzejewski.name/> 28 * @license http://www.opensource.org/licenses/lgpl-license.php LGPL 29 * @category Object Relational Mapping 30 * @link www.doctrine-project.org 31 * @since 1.1 32 * @version $Revision$ 33 */ 34class Doctrine_Ticket_DC24_TestCase extends Doctrine_UnitTestCase 35{ 36 37 public function prepareTables() 38 { 39 $this->tables = array('ticket_DC24_master', 'ticket_DC24_servant'); 40 parent::prepareTables(); 41 } // end prepareTables(); 42 43 public function prepareData() 44 { 45 $servant = new Ticket_DC24_Servant; 46 $servant->bar = 6; 47 $servant->save(); 48 49 $servantId = $servant->identifier(); 50 51 $master = new Ticket_DC24_Master; 52 $master->foo = 6; 53 $master->servant_id = $servantId['id']; 54 $master->save(); 55 } // end prepareData(); 56 57 public function testTest() 58 { 59 try 60 { 61 $master = Doctrine_Query::create() 62 ->select('m.*, s.bar AS joe') 63 ->from('Ticket_DC24_Master m') 64 ->innerJoin('m.Ticket_DC24_Servant s') 65 ->where('m.id = 1') 66 ->fetchOne(); 67 68 $master->foo = 5; 69 $master->save(); 70 71 $master2 = Doctrine_Query::create() 72 ->select('m.*') 73 ->from('Ticket_DC24_Master m') 74 ->where('m.id = 1') 75 ->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY); 76 $this->assertEqual($master2['servant_id'], 1); 77 } 78 catch(Exception $e) 79 { 80 $this->fail($e->getMessage()); 81 } 82 } // end testTest(); 83 84} // end Doctrine_Ticket_DC24_TestCase; 85 86class Ticket_DC24_Master extends Doctrine_Record 87{ 88 public function setTableDefinition() 89 { 90 $this->hasColumn('id', 'integer', 4, array( 91 'type' => 'integer', 92 'primary' => true, 93 'autoincrement' => true, 94 'length' => '4', 95 )); 96 $this->hasColumn('foo', 'integer', 4, array( 97 'type' => 'integer', 98 'notnull' => true, 99 'length' => '4', 100 )); 101 $this->hasColumn('servant_id', 'integer', 4, array( 102 'type' => 'integer', 103 //'notnull' => true, 104 'length' => '4', 105 )); 106 } // end setTableDefinition(); 107 108 public function setUp() 109 { 110 $this->hasOne('Ticket_DC24_Servant', array( 111 'local' => 'servant_id', 112 'foreign' => 'id')); 113 } // end setUp(); 114} // end Ticket_DC24_Master; 115 116class Ticket_DC24_Servant extends Doctrine_Record 117{ 118 public function setTableDefinition() 119 { 120 $this->hasColumn('id', 'integer', 4, array( 121 'type' => 'integer', 122 'primary' => true, 123 'autoincrement' => true, 124 'length' => '4', 125 )); 126 $this->hasColumn('bar', 'integer', 4, array( 127 'type' => 'integer', 128 'notnull' => true, 129 'length' => '4', 130 )); 131 } // end setTableDefinition(); 132 133 public function setUp() 134 { 135 $this->hasMany('Ticket_DC24_Master as Masters', array( 136 'local' => 'id', 137 'foreign' => 'servant_id')); 138 } // end setUp(); 139} // end Ticket_DC24_Servant;