"Inner" join two tables

@param string $table
@param string|array $firstTableField
@param string $operator
@param string $secondTableField

@return Select
@example innerJoin('user u', 'u.id', '=', 'r.user_role_id')
425715
public function innerJoin(string $table, $firstTableField, string $operator = null, string $secondTableField = null): Select
    {
        $this->joins[] = [
          'type' => 'INNER JOIN',
          'table' => $table,
          'first' => $firstTableField,
          'operator' => $operator,
          'second' => $secondTableField
        ];
        return $this;
    }
891941
public function leftJoinWhere($table, $one, $operator, $two)
    {
        return $this->joinWhere($table, $one, $operator, $two, 'left');
    }
1209049
public function addInnerJoinOn($table, $where)
    {
        //argument test
        Argument::i()
            //Argument 1 must be a string
            ->test(1, 'string')
            //Argument 2 must be a string
            ->test(2, 'string');
        
        $where = func_get_args();
        $table = array_shift($where);
        
        $this->join[] = array(self::INNER, $table, $where, false);
        
        return $this;
    }
1174915
public function join($table, $column = null, $operator = null, $value = null) {
        $this->q->apd(' INNER JOIN ' . $table);

        if (!empty($column) || !empty($operator) || !empty($value)) {
            if (in_array($operator, $this->operators)) {
                $this->q->apd(' ON ' . $column . $operator . ' ' .  $value);
            } else {
                $value = '=';
                $this->q->apd(' ON ' . $column . ' ' . $value . ' ' . $operator);
            }

            return $this;
        } else {
            return $this;
        }
    }
1350609
public function rightJoinWhere($table, $one, $operator, $two)
    {
        return $this->joinWhere($table, $one, $operator, $two, 'right');
    }
728662
public function innerJoin($table, $on) {

		$join			= new \stdClass();
		$join->table	= $table;
		$join->on		= $on;

		$this->innerJoins[] = $join;
		
		return $this;
	}
625516
public function whereRelation($column1, $operator, $column2 = null)
    {
        $this->wConditions()->relation(...func_get_args());

        return $this;
    }
44140
public function join($table, $one, $operator = null, $two = null, $type = 'inner', $where = false)
    {
        if ($one instanceof Closure) {
            $this->joins[] = new JoinClause($type, $table);

            call_user_func($one, end($this->joins));
        } else {
            $join = new JoinClause($type, $table);

            $this->joins[] = $join->on(
                $one, $operator, $two, 'and', $where
            );
        }

        return $this;
    }
981805
public function joinWhere($table, $first, $operator, $second, $type = 'inner')
    {
        return $this->join($table, $first, $operator, $second, $type, true);
    }
664683
public function join($table, $key, $operator = null, $value = null, $type = 'inner')
    {
        if (!$key instanceof \Closure) {
            $key = function ($joinBuilder) use ($key, $operator, $value) {
                $joinBuilder->on($key, $operator, $value);
            };
        }

        // Build a new JoinBuilder class, keep it by reference so any changes made
        // in the closure should reflect here
        $joinBuilder = $this->container->build('\\Pixie\\QueryBuilder\\JoinBuilder', array($this->connection));
        $joinBuilder = &$joinBuilder;
        // Call the closure with our new joinBuilder object
        $key($joinBuilder);
        $table = $this->addTablePrefix($table, false);
        // Get the criteria only query from the joinBuilder object
        $this->statements['joins'][] = compact('type', 'table', 'joinBuilder');

        return $this;
    }
614509
public function orOn($first, $operator = null, $second = null)
    {
        return $this->on($first, $operator, $second, 'or');
    }
576433
final public function join($table,$column,$operator=null,$value=null, $scape_quote=false) {
      $this->clauseJoin($table,$column,$operator,$value,$scape_quote,"");
      return $this;
   }
392753
public function innerJoin($table, $criteria = null, $alias = null)
    {
        return $this->join($table, $criteria, self::INNER_JOIN, $alias);
    }
1224780
public function union($fields, $second)
    {
        return array_map(
            'unserialize', array_unique(
                array_map(
                    'serialize', array_merge(
                        $this->select($fields),
                        $second->select($fields)
                    )
                )
            )
        );
    }
455323
public function join($table, Closure $closure)
    {
        $this->sql->addJoinClause('INNER', $table, $closure);
        return $this;
    }
951941
public function rightJoin(string $table, string $first, string $operator = '=', string $two = ''): BaseQueryRelateContract
    {
        $this->query->rightJoin($table, $first, $operator, $two);

        return $this;
    }
993577
protected function realJoin(
        /*# string */ $joinType,
        $secondTable,
        $onClause = '',
        /*# bool */ $rawMode = false
    ) {
        $alias = 0; // no alias
        list($secondTable, $alias) = $this->fixJoinTable($secondTable);

        if ($rawMode || '' === $onClause || $this->isRaw($onClause, false)) {
            $rawMode = true;
        } else {
            $onClause = $this->fixOnClause($onClause);
        }
        $clause = &$this->getClause('JOIN');
        $clause[] = [$rawMode, $joinType, $secondTable, $alias, $onClause];
        return $this;
    }