public function testJoinAliasQuery() { $con = Propel::getServiceContainer()->getConnection(BookPeer::DATABASE_NAME); $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\Book', 'b'); $c->join('b.Author a'); $c->where('a.FirstName = ?', 'Leo'); $books = BookPeer::doSelect($c, $con); $expectedSQL = "SELECT book.ID, book.TITLE, book.ISBN, book.PRICE, book.PUBLISHER_ID, book.AUTHOR_ID FROM `book` INNER JOIN `author` `a` ON (book.AUTHOR_ID=a.ID) WHERE a.FIRST_NAME = 'Leo'"; $this->assertEquals($expectedSQL, $con->getLastExecutedQuery(), 'join() allows the use of relation alias in where()'); $c = new ModelCriteria('bookstore', 'Propel\\Tests\\Bookstore\\BookstoreEmployee', 'be'); $c->join('be.Supervisor sup'); $c->join('sup.Subordinate sub'); $c->where('sub.Name = ?', 'Foo'); $employees = BookstoreEmployeePeer::doSelect($c, $con); $expectedSQL = "SELECT bookstore_employee.ID, bookstore_employee.CLASS_KEY, bookstore_employee.NAME, bookstore_employee.JOB_TITLE, bookstore_employee.SUPERVISOR_ID FROM `bookstore_employee` INNER JOIN `bookstore_employee` `sup` ON (bookstore_employee.SUPERVISOR_ID=sup.ID) INNER JOIN `bookstore_employee` `sub` ON (sup.ID=sub.SUPERVISOR_ID) WHERE sub.NAME = 'Foo'"; $this->assertEquals($expectedSQL, $con->getLastExecutedQuery(), 'join() allows the use of relation alias in further joins()'); }
/** * Test inheritance features. */ public function testInheritance() { $manager = new BookstoreManager(); $manager->setName("Manager 1"); $manager->setJobTitle("Warehouse Manager"); $manager->save(); $managerId = $manager->getId(); $employee = new BookstoreEmployee(); $employee->setName("Employee 1"); $employee->setJobTitle("Janitor"); $employee->setSupervisorId($managerId); $employee->save(); $empId = $employee->getId(); $cashier = new BookstoreCashier(); $cashier->setName("Cashier 1"); $cashier->setJobTitle("Cashier"); $cashier->save(); $cashierId = $cashier->getId(); // 1) test the pooled instances' $c = new Criteria(); $c->add(BookstoreEmployeePeer::ID, array($managerId, $empId, $cashierId), Criteria::IN); $c->addAscendingOrderByColumn(BookstoreEmployeePeer::ID); $objects = BookstoreEmployeePeer::doSelect($c); $this->assertEquals(3, count($objects), "Expected 3 objects to be returned."); list($o1, $o2, $o3) = $objects; $this->assertSame($o1, $manager); $this->assertSame($o2, $employee); $this->assertSame($o3, $cashier); // 2) test a forced reload from database BookstoreEmployeePeer::clearInstancePool(); list($o1, $o2, $o3) = BookstoreEmployeePeer::doSelect($c); $this->assertTrue($o1 instanceof BookstoreManager, "Expected BookstoreManager object, got " . get_class($o1)); $this->assertTrue($o2 instanceof BookstoreEmployee, "Expected BookstoreEmployee object, got " . get_class($o2)); $this->assertTrue($o3 instanceof BookstoreCashier, "Expected BookstoreCashier object, got " . get_class($o3)); }