本文整理汇总了PHP中ModelJoin::setRelationMap方法的典型用法代码示例。如果您正苦于以下问题:PHP ModelJoin::setRelationMap方法的具体用法?PHP ModelJoin::setRelationMap怎么用?PHP ModelJoin::setRelationMap使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModelJoin
的用法示例。
在下文中一共展示了ModelJoin::setRelationMap方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testSetRelationMapComposite
public function testSetRelationMapComposite()
{
$table = ReaderFavoritePeer::getTableMap();
$join = new ModelJoin();
$join->setTableMap($table);
$join->setRelationMap($table->getRelation('BookOpinion'));
$this->assertEquals(array(ReaderFavoritePeer::BOOK_ID, ReaderFavoritePeer::READER_ID), $join->getLeftColumns(), 'setRelationMap() automatically sets the left columns for composite relationships');
$this->assertEquals(array(BookOpinionPeer::BOOK_ID, BookOpinionPeer::READER_ID), $join->getRightColumns(), 'setRelationMap() automatically sets the right columns for composite relationships');
}
示例2: joinProduct
/**
* Adds a JOIN clause to the query using the Product relation
*
* @param string $relationAlias optional alias for the relation
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
*
* @return OrganizationProductQuery The current query, for fluid interface
*/
public function joinProduct($relationAlias = null, $joinType = Criteria::INNER_JOIN)
{
$tableMap = $this->getTableMap();
$relationMap = $tableMap->getRelation('Product');
// create a ModelJoin object for this join
$join = new ModelJoin();
$join->setJoinType($joinType);
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
if ($previousJoin = $this->getPreviousJoin()) {
$join->setPreviousJoin($previousJoin);
}
// add the ModelJoin to the current object
if ($relationAlias) {
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
$this->addJoinObject($join, $relationAlias);
} else {
$this->addJoinObject($join, 'Product');
}
return $this;
}
示例3: join
/**
* Adds a JOIN clause to the query
* Infers the ON clause from a relation name
* Uses the Propel table maps, based on the schema, to guess the related columns
* Beware that the default JOIN operator is INNER JOIN, while Criteria defaults to WHERE
* Examples:
* <code>
* $c->join('Book.Author');
* => $c->addJoin(BookPeer::AUTHOR_ID, AuthorPeer::ID, Criteria::INNER_JOIN);
* $c->join('Book.Author', Criteria::RIGHT_JOIN);
* => $c->addJoin(BookPeer::AUTHOR_ID, AuthorPeer::ID, Criteria::RIGHT_JOIN);
* $c->join('Book.Author a', Criteria::RIGHT_JOIN);
* => $c->addAlias('a', AuthorPeer::TABLE_NAME);
* => $c->addJoin(BookPeer::AUTHOR_ID, 'a.ID', Criteria::RIGHT_JOIN);
* </code>
*
* @param string $relation Relation to use for the join
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
*
* @return ModelCriteria The current object, for fluid interface
*
* @throws PropelException
*/
public function join($relation, $joinType = Criteria::INNER_JOIN)
{
// relation looks like '$leftName.$relationName $relationAlias'
list($fullName, $relationAlias) = self::getClassAndAlias($relation);
if (strpos($fullName, '.') === false) {
// simple relation name, refers to the current table
$leftName = $this->getModelAliasOrName();
$relationName = $fullName;
$previousJoin = $this->getPreviousJoin();
$tableMap = $this->getTableMap();
} else {
list($leftName, $relationName) = explode('.', $fullName);
// find the TableMap for the left table using the $leftName
if ($leftName == $this->getModelAliasOrName()) {
$previousJoin = $this->getPreviousJoin();
$tableMap = $this->getTableMap();
} elseif (isset($this->joins[$leftName])) {
$previousJoin = $this->joins[$leftName];
$tableMap = $previousJoin->getTableMap();
} else {
throw new PropelException('Unknown table or alias ' . $leftName);
}
}
$leftTableAlias = isset($this->aliases[$leftName]) ? $leftName : null;
// find the RelationMap in the TableMap using the $relationName
if (!$tableMap->hasRelation($relationName)) {
throw new PropelException('Unknown relation ' . $relationName . ' on the ' . $leftName . ' table');
}
$relationMap = $tableMap->getRelation($relationName);
// create a ModelJoin object for this join
$join = new ModelJoin();
$join->setJoinType($joinType);
if (null !== $previousJoin) {
$join->setPreviousJoin($previousJoin);
}
$join->setRelationMap($relationMap, $leftTableAlias, $relationAlias);
// add the ModelJoin to the current object
if ($relationAlias !== null) {
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
$this->addJoinObject($join, $relationAlias);
} else {
$this->addJoinObject($join, $relationName);
}
return $this;
}
示例4: testUseFkQueryTwiceTwoAliases
public function testUseFkQueryTwiceTwoAliases()
{
$q = BookQuery::create()->useAuthorQuery('a')->filterByFirstName('Leo')->endUse()->useAuthorQuery('b')->filterByLastName('Tolstoi')->endUse();
$join1 = new ModelJoin();
$join1->setJoinType(Criteria::LEFT_JOIN);
$join1->setTableMap(AuthorPeer::getTableMap());
$join1->setRelationMap(BookPeer::getTableMap()->getRelation('Author'), null, 'a');
$join1->setRelationAlias('a');
$join2 = new ModelJoin();
$join2->setJoinType(Criteria::LEFT_JOIN);
$join2->setTableMap(AuthorPeer::getTableMap());
$join2->setRelationMap(BookPeer::getTableMap()->getRelation('Author'), null, 'b');
$join2->setRelationAlias('b');
$q1 = BookQuery::create()->addAlias('a', AuthorPeer::TABLE_NAME)->addJoinObject($join1, 'a')->add('a.FIRST_NAME', 'Leo', Criteria::EQUAL)->addAlias('b', AuthorPeer::TABLE_NAME)->addJoinObject($join2, 'b')->add('b.LAST_NAME', 'Tolstoi', Criteria::EQUAL);
$this->assertTrue($q->equals($q1), 'useFkQuery() called twice on the same relation with two aliases creates two joins');
}
示例5: getGroupeFormatter
/**
* 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;
}
示例6: getTraitementFormatter
/**
* 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;
}