join操作的集中执行方法
@param string $type 各种不同的join操作
@param string $table join的表明
@param string $col 第一个字段
@param string $col2 第二个字段
@return self
170867
private function join($type, $table, $col, $op, $col2 = '')
    {
        $col = $this->formatColumn($col);
        $col2 = $this->formatColumn($col2);
        $this->_sql['join'][$type][] = [$table, $col, $op, $col2];
        return $this;
    }
481557
protected function performJoin($table, $foreign, $other, $deletedAt = false, $type = 'left')
    {
        $joins = [];
        foreach ((array) $this->getBaseQueryBuilder()->joins as $key => $join) {
            $joins[] = $join->table;
        }

        if (! in_array($table, $joins)) {
            $this->getBaseQueryBuilder()->join($table, $foreign, '=', $other, $type);
        }

        if ($deletedAt !== false) {
            $this->getBaseQueryBuilder()->whereNull($deletedAt);
        }
    }
20357
public function join($type, $table, $conditions=null, $recursive=true) {
		if($recursive && is_array($table)) {
			foreach($table as $_table=>$_conditions) {
				if($_conditions instanceof static)
					$this->join($type, $table, $conditions, false);
				elseif($_conditions instanceof Raw)
					$this->join($type, $table, $conditions, false);
				else
					$this->join($type, $_table, $_conditions);
			}

			return $this;
		}

		#for tables that are static or Raw
		if(is_array($table)) {
			$alias = array_keys($table)[0];
			$table = array_values($table)[0];
		}
		else {
			$table_alias = explode(' ', $table);
			$table = $table_alias[0];
			if(isset($table_alias[1]))
				$alias = $table_alias[1];
			else
				$alias = $table;
		}

		$this->joins[$alias] = [$type, $table, $conditions];

		return $this;
	}
667936
public function addSorting($column, $type)
    {
        $availableSortTypes = [self::SORT_ASC, self::SORT_DESC];
        if (!in_array($type, $availableSortTypes)) {
            throw new \Exception(sprintf('Wrong sort type: "%s". Supported types: [%s]', $type, implode(',', $availableSortTypes)));
        }

        $this->sortParams[$column] = $type;

        return $this;
    }
863153
public function join($table, $alias = null, $on = null, $type = 'INNER JOIN')
    {
        $table = $this->connection->quoteIdentifier($table);

        $this->joins[$alias] = "$type $table $alias ON $on";

        return $this;
    }
463872
public function join($table, $condition = null, $alias = null, $type = null)
    {
        if (strpos($condition, '[') === false && strpos($condition, '(') === false) {
            $condition = (string)preg_replace('#\w+#', '[\\0]', $condition);
        }

        if (is_string($table) && strpos($table, '\\') !== false) {
            /** @var \ManaPHP\Model $model */
            $model = $this->_di->getShared($table);
            $table = $model->getSource($this->_bind);
        }

        $this->_joins[] = [$table, $condition, $alias, $type];

        return $this;
    }
991959
public function join($table, $criteria = null, $type = self::INNER_JOIN, $alias = null)
    {
        if (!$this->isJoinUnique($table, $alias)) {
            return $this;
        }

        if (is_string($criteria)) {
            $criteria = array($criteria);
        }

        $this->join[] = array('table' => $table,
            'criteria' => $criteria,
            'type' => $type,
            'alias' => $alias);

        return $this;
    }
1056642
public function alterColumn($column, $type)
    {
        $column = $this->quote($column);

        $this->append(sprintf(' CHANGE %s %s %s ', $column, $column, $type));
        return $this;
    }
1191915
public function join($table, $on, $type = 'full', $alias = '')
    {
        if (!isset($this->joins)) {
            $this->joins = [];
        }
        $join = [
            'table' => $this->trimName($table),
            'on' => $on,
            'type' => $type,
        ];
        if (!empty($alias)) {
            $join['alias'] = $this->trimName($alias);
        }
        $this->joins = array_merge($this->joins, [$join]);
        return $this;
    }
276790
public function joinRaw($table, $raw, $type = 'inner')
	{
		$this->syntax->setRawJoin($table, $raw, $type);
		return $this;
	}
1061401
public function join($table, $first, $operator = null, $second = null, $type = 'inner') {
        $on = $first;
        if (!empty($operator)) {
            $on .= is_null($second) ? ' = '.$operator : sprintf(' %s %s', $operator, $second);
        }
        $this->joins[] = compact('table', 'on', 'type');
        return $this;
    }
1294929
public function type($type, $config = null)
    {
        if ($config) {
            $this->_types[$type] = $config;
        }
        if (!isset($this->_types[$type])) {
            throw new SqlException("Column type `'{$type}'` does not exist.");
        }
        return $this->_types[$type];
    }
500900
protected function join($firsttable, $secondtable, Array $on, $type = 'inner') {
        $this->query->setJoin($firsttable, $secondtable, $on, strtoupper($type));
        return $this;
    }
337357
public function addColumn($column, $type)
    {
        $this->append(sprintf(' ADD COLUMN %s %s', $this->quote($column), $type));
        return $this;
    }
751897
protected function join(
        $type,
        $joinTableName,
        $key,
        $comparator,
        $value = null,
        $shouldCompareFields = true,
        $tableName = null
    ) {
        if (!$tableName) {
            $tableName = $this->getTableName();
        }

        $condition = new \Parable\ORM\Query\Condition();
        $condition
            ->setQuery($this)
            ->setTableName($tableName)
            ->setJoinTableName($joinTableName)
            ->setKey($key)
            ->setComparator($comparator)
            ->setValue($value)
            ->setShouldCompareFields($shouldCompareFields);

        $this->joins[$type][] = $condition;
        return $this;
    }
792501
function join($table_or_column, $on_clause_or_column = null, $join_type = self::JOIN) {
		return $this->addJoin($table_or_column, $on_clause_or_column, $join_type);
	}
331698
public function column($column, $type = 'string', $length = 255)
    {
        $this->builder->setDiscriminatorColumn($column, $type, $length);

        return $this;
    }