Adds addition tables to "JOIN ...".

@param      $fromAlias
@param      $join
@param      $alias
@param null $condition
@return $this
167080
public function leftJoin($fromAlias, $join, $alias, $condition = null)
    {
        $this->_dbPending[] = [
            'name' => 'leftJoin',
            'args' => [
                $fromAlias,
                $join,
                $alias,
                $condition
            ],
        ];

        return $this;
    }
1069281
public final function join($tableName, $targetTableName = null, $alias = null)
    {
        return new QueryHelper\QueryJoin($this, $tableName, 'JOIN', $targetTableName, $alias);
    }
143221
public function rightJoin(string $tableName, string $tableAlias, string $condition) : self
    {
        $this->joins['right'][] = ['tableName' => $tableName, 'tableAlias' => $tableAlias, 'condition' => $condition];

        return $this;
    }
715945
private function _join($type, $mixed, $criteria, $alias='')
    {
        if (is_object($mixed)) {
            $this->_joins []= sprintf('%s (%s) %s %s', $type, $mixed, $alias ?: 'derived', $criteria);
        } elseif ($alias) {
            $this->_joins []= sprintf('%s `%s` AS `%s` %s', $type, $mixed, $alias, $criteria);
        } else {
            $this->_joins []= sprintf('%s `%s` %s', $type, $mixed, $criteria);
        }

        return $this;
    }
667053
public function from($table, $alias = null) {
        $this->_table = (string) $table;
        $this->asAlias($alias);

        return $this;
    }
825852
public static function findJoinByAlias(QueryBuilder $qb, $rootAlias, $joinAlias)
    {
        $dqlParts = $qb->getDQLParts();

        if (!isset($dqlParts['join'][$rootAlias])) {
            return null;
        }
        /** @var \Doctrine\ORM\Query\Expr\Join $join */
        foreach ($dqlParts['join'][$rootAlias] as $join) {
            if ($joinAlias === $join->getAlias()) {
                return $join;
            }
        }

        return null;
    }
1002123
public static function left(Table $table, string $alias, array $on) : Join
    {
        return new self(self::LEFT, $table, $alias, $on);
    }
787089
public function from($table, $alias = null)
    {
        if ($alias === null) {
            $this->from[] = $this->grammar->buildId($table);
        } else {
            $this->from[] = $this->grammar->buildIdWithAlias($table, $alias);
        }

        return $this;
    }
1283727
private function getSQLForJoins($fromAlias, array &$knownAliases)
    {
        $sql = '';

        if (isset($this->sqlParts['join'][$fromAlias])) {
            foreach ($this->sqlParts['join'][$fromAlias] as $join) {
                if (array_key_exists($join['joinAlias'], $knownAliases)) {
                    throw QueryException::nonUniqueAlias($join['joinAlias'], array_keys($knownAliases));
                }
                $sql                             .= ' ' . strtoupper($join['joinType'])
                    . ' JOIN ' . $join['joinTable'] . ' ' . $join['joinAlias']
                    . ' ON ' . ((string) $join['joinCondition']);
                $knownAliases[$join['joinAlias']] = true;
            }

            foreach ($this->sqlParts['join'][$fromAlias] as $join) {
                $sql .= $this->getSQLForJoins($join['joinAlias'], $knownAliases);
            }
        }

        return $sql;
    }
1334496
public static function inner(string $fromAlias, string $to, string $toAlias, string $condition): Join
    {
        return new self(self::MODE_INNER, $fromAlias, $to, $toAlias, $condition);
    }
788459
public function join($table, $constraint, $tableAlias = null)
    {
        return $this->addJoinSource('', $table, $constraint, $tableAlias);
    }
907580
public function leftJoin(string $tableName, string $tableAlias, string $condition) : self
    {
        $this->joins['left'][] = ['tableName' => $tableName, 'tableAlias' => $tableAlias, 'condition' => $condition];

        return $this;
    }
746063
public final function joinLeft($tableName, $targetTableName = null, $alias = null)
    {
        return new QueryHelper\QueryJoin($this, $tableName, 'LEFT JOIN', $targetTableName, $alias);
    }
1224278
public function join($tableName, $alias = null)
    {
        $this->joins[] = ' LEFT JOIN ?f as ?f';
        $this->lastJoinAlias = $alias;
        $this->joinArguments[] = $tableName;
        $this->joinArguments[] = $alias;
        return $this;
    }
1114151
public function addFrom($table, $alias = null)
    {
        if ($alias) {
            $this->_tables[$alias] = $table;
        } else {
            $this->_tables[] = $table;
        }

        return $this;
    }
201443
public function rightJoin($table, $alias = null, $on = null)
    {
        return $this->join($table, $alias, $on, 'RIGHT JOIN');
    }
1014953
private function hasJoin(ProxyQueryInterface $queryBuilder, $alias)
    {
        $joins = $queryBuilder->getDQLPart('join');

        if (!isset($joins[$alias])) {
            return false;
        }

        foreach ($joins[$alias] as $join) {
            if ('trans' === $join->getAlias()) {
                return true;
            }
        }

        return false;
    }