public function testFormat() { $con = Propel::getConnection(BookPeer::DATABASE_NAME); BookstoreEmployeePeer::clearInstancePool(); $stmt = $con->query('SELECT * FROM bookstore_employee'); $formatter = new PropelObjectFormatter(); $formatter->init(new ModelCriteria('bookstore', 'BookstoreEmployee')); $emps = $formatter->format($stmt); $expectedClass = array('b1' => 'BookstoreEmployee', 'b2' => 'BookstoreManager', 'b3' => 'BookstoreCashier'); foreach ($emps as $emp) { $this->assertEquals($expectedClass[$emp->getName()], get_class($emp), 'format() creates objects of the correct class when using inheritance'); } }
/** * Gets the current Model object in the collection * This is where the hydration takes place. * * @see PropelObjectFormatter::getAllObjectsFromRow() * * @return BaseObject */ public function current() { return $this->formatter->getAllObjectsFromRow($this->currentRow); }
public function init(ModelCriteria $criteria) { parent::init($criteria); $this->isSingleTableInheritance = $criteria->getTableMap()->isSingleTableInheritance(); return $this; }
/** * PropelFormatter pour la requete sql directe * * @return PropelFormatter pour le requete getGroupe */ private static function getGroupeFormatter() { if (UtilisateurProfessionnel::$groupeFormatter === null) { $formatter = new PropelObjectFormatter(); $formatter->setDbName(GroupePeer::DATABASE_NAME); $formatter->setClass('Groupe'); $formatter->setPeer('GroupePeer'); $formatter->setAsColumns(array()); $formatter->setHasLimit(false); $groupeTableMap = Propel::getDatabaseMap(GroupePeer::DATABASE_NAME)->getTableByPhpName('Groupe'); $width = array(); // create a ModelJoin object for this join $j_groupes_classesJoin = new ModelJoin(); $j_groupes_classesJoin->setJoinType(Criteria::LEFT_JOIN); $j_groupes_classesRelation = $groupeTableMap->getRelation('JGroupesClasses'); $j_groupes_classesJoin->setRelationMap($j_groupes_classesRelation); $width["JGroupesClasses"] = new ModelWith($j_groupes_classesJoin); $classeJoin = new ModelJoin(); $classeJoin->setJoinType(Criteria::LEFT_JOIN); $jGroupesClassesTableMap = Propel::getDatabaseMap(GroupePeer::DATABASE_NAME)->getTableByPhpName('JGroupesClasses'); $relationClasse = $jGroupesClassesTableMap->getRelation('Classe'); $classeJoin->setRelationMap($relationClasse); $classeJoin->setPreviousJoin($j_groupes_classesJoin); $width["Classe"] = new ModelWith($classeJoin); $formatter->setWith($width); UtilisateurProfessionnel::$groupeFormatter = $formatter; } return UtilisateurProfessionnel::$groupeFormatter; }
public function testFormatOneNoResult() { $con = Propel::getConnection(BookPeer::DATABASE_NAME); $stmt = $con->query('SELECT * FROM book WHERE book.TITLE = "foo"'); $formatter = new PropelObjectFormatter(); $formatter->init(new ModelCriteria('bookstore', 'Book')); $book = $formatter->formatOne($stmt); $this->assertNull($book, 'PropelObjectFormatter::formatOne() returns null when no result'); }
public function getOpenCollectingTransfers(PropelPDO $con) { $sql = "SELECT * FROM " . TransferPeer::TABLE_NAME . " WHERE" . " member_id = :member_id AND" . " state = :state" . " FOR UPDATE"; $stmt = $con->prepare($sql); $stmt->execute(array(':member_id' => $this->getId(), ':state' => Transfer::STATE_COLLECT)); $formatter = new PropelObjectFormatter(); $formatter->setClass('Transfer'); return $formatter->format($stmt); }
public function testFormaWithRelatedObjects() { $con = Propel::getConnection(BookPeer::DATABASE_NAME); $con->useDebug(false); $con->useDebug(true); $this->assertEquals(0, $con->getQueryCount()); $stmt = $con->query('SELECT * FROM author LEFT JOIN book ON (author.id = book.author_id)'); $formatter = new PropelObjectFormatter(); $criteria = new ModelCriteria('bookstore', 'Author'); $criteria->joinWith('Book'); $formatter->init($criteria); $authors = $formatter->format($stmt); $this->assertEquals(1, $con->getQueryCount()); $this->assertTrue($authors instanceof PropelObjectCollection, 'PropelObjectFormatter::formatOne() returns a model object'); foreach ($authors as $author) { $this->assertTrue($author->getBooks() instanceof PropelCollection); if ('Grass' === $author->getLastName()) { $this->assertEquals(2, $author->countBooks()); } else { $this->assertEquals(1, $author->countBooks()); } } $this->assertEquals(1, $con->getQueryCount()); }
/** * Override formatter function for one item. * * @param PDOStatement $stmt * @return mixed */ public function formatOne(PDOStatement $stmt) { $item = parent::format($stmt); if ($this->formatterFunction) { return call_user_func($this->formatterFunction, $item); } if (is_object($item) && $item instanceof BaseObject) { return Propel::toTwig($item); } return $item; }
/** * PropelFormatter pour la requete sql directe * * @return PropelFormatter pour le requete getGroupe */ private static function getTraitementFormatter() { if (AbsenceEleveSaisie::$traitementFormatter === null) { $formatter = new PropelObjectFormatter(); $formatter->setDbName(AbsenceEleveTraitementPeer::DATABASE_NAME); $formatter->setClass('AbsenceEleveTraitement'); $formatter->setPeer('AbsenceEleveTraitementPeer'); $formatter->setAsColumns(array()); $formatter->setHasLimit(false); $typeTableMap = Propel::getDatabaseMap(AbsenceEleveTraitementPeer::DATABASE_NAME)->getTableByPhpName('AbsenceEleveTraitement'); $width = array(); // create a ModelJoin object for this join $typeJoin = new ModelJoin(); $typeJoin->setJoinType(Criteria::LEFT_JOIN); $typeRelation = $typeTableMap->getRelation('AbsenceEleveType'); $typeJoin->setRelationMap($typeRelation); $width["AbsenceEleveType"] = new ModelWith($typeJoin); $notificationJoin = new ModelJoin(); $notificationJoin->setJoinType(Criteria::LEFT_JOIN); $notificationRelation = $typeTableMap->getRelation('AbsenceEleveNotification'); $notificationJoin->setRelationMap($notificationRelation); $width["AbsenceEleveNotification"] = new ModelWith($notificationJoin); $justificationJoin = new ModelJoin(); $justificationJoin->setJoinType(Criteria::LEFT_JOIN); $justificationRelation = $typeTableMap->getRelation('AbsenceEleveJustification'); $justificationJoin->setRelationMap($justificationRelation); $width["AbsenceEleveJustification"] = new ModelWith($justificationJoin); $formatter->setWith($width); AbsenceEleveSaisie::$traitementFormatter = $formatter; } return AbsenceEleveSaisie::$traitementFormatter; }
/** * * Retourne la liste de toutes les période de notes pour lesquelles l'eleve a ete affecte * * * @return PropelObjectCollection PeriodeNote[] */ public function getPeriodeNotes() { if(null === $this->collPeriodeNotes) { if ($this->isNew() && null === $this->collPeriodeNotes) { // return empty collection $this->initPeriodeNotes(); } else { $sql = "SELECT /* log pour sql manuel */ DISTINCT periodes.NOM_PERIODE, periodes.NUM_PERIODE, periodes.VEROUILLER, periodes.ID_CLASSE, periodes.DATE_VERROUILLAGE, periodes.DATE_FIN FROM `periodes` INNER JOIN classes ON (periodes.ID_CLASSE=classes.ID) INNER JOIN j_eleves_classes ON (classes.ID=j_eleves_classes.ID_CLASSE) WHERE j_eleves_classes.LOGIN='******' AND j_eleves_classes.periode = periodes.num_periode ORDER by periodes.NUM_PERIODE"; $con = Propel::getConnection(null, Propel::CONNECTION_READ); $stmt = $con->prepare($sql); $stmt->execute(); $formatter = new PropelObjectFormatter(); $formatter->setDbName(PeriodeNotePeer::DATABASE_NAME); $formatter->setClass('PeriodeNote'); $formatter->setPeer('PeriodeNotePeer'); $formatter->setAsColumns(array()); $formatter->setHasLimit(false); $this->collPeriodeNotes = $formatter->format($stmt); // $collPeriodeNotes = PeriodeNoteQuery::create()->useClasseQuery()->useJEleveClasseQuery()->filterByEleve($this)->endUse()->endUse() // ->where('j_eleves_classes.periode = periodes.num_periode') // ->setComment('log pour sql manuel') // ->distinct()->find(); // $this->collPeriodeNotes = $collPeriodeNotes; } } return $this->collPeriodeNotes; }