public static function create(\ModelCriteria $q, $relation, $relationAlias = null, $joinType = \Criteria::INNER_JOIN) { $tableMap = $q->getTableMap(); $relationMap = $tableMap->getRelation($relation); // create a Join object for this join $join = new static(); $join->setJoinType($joinType); $join->setRelationMap($relationMap, $q->getModelAlias(), $relationAlias); if ($previousJoin = $q->getPreviousJoin()) { $join->setPreviousJoin($previousJoin); } // add the ModelJoin to the current object if ($relationAlias) { $q->addAlias($relationAlias, $relationMap->getRightTable()->getName()); $q->addJoinObject($join, $relationAlias); } else { $q->addJoinObject($join, $relationMap->getRightTable()->getName()); } return $join; }