public function setRelationMap(RelationMap $relationMap, $leftTableAlias = null, $relationAlias = null) { $leftCols = $relationMap->getLeftColumns(); $rightCols = $relationMap->getRightColumns(); $leftValues = $relationMap->getLocalValues(); $nbColumns = $relationMap->countColumnMappings(); for ($i = 0; $i < $nbColumns; $i++) { if (null !== $leftValues[$i]) { if ($relationMap->getType() === RelationMap::ONE_TO_MANY) { //one-to-many $this->addForeignValueCondition($rightCols[$i]->getTableName(), $rightCols[$i]->getName(), $relationAlias, $leftValues[$i], Criteria::EQUAL); } else { //many-to-one $this->addLocalValueCondition($leftCols[$i]->getTableName(), $leftCols[$i]->getName(), $leftTableAlias, $leftValues[$i], Criteria::EQUAL); } } else { $this->addExplicitCondition($leftCols[$i]->getTableName(), $leftCols[$i]->getName(), $leftTableAlias, $rightCols[$i]->getTableName(), $rightCols[$i]->getName(), $relationAlias, Criteria::EQUAL); } } $this->relationMap = $relationMap; return $this; }