Simple OR ON condition with various set of arguments. Can only be used to link column values
together, no parametric values allowed.

@param mixed ...$args [(column, outer column), (column, operator, outer column)]

@return $this

@throws BuilderException
19870
public function orOn(...$args)
    {
        $this->createToken(
            'OR',
            $args,
            $this->joinTokens[$this->activeJoin]['on'],
            $this->onWrapper()
        );

        return $this;
    }
316111
public function createNewOperator($type, array $args)
    {
        if (empty($args) || count($args) < 2) {
            throw new \InvalidArgumentException(__METHOD__.' accept minimum 2 arguments');
        }

        return $this->factory
            ->createOperator()
            ->setType($type)
            ->setCriterias($args)
        ;
    }
1356369
public function andMore($column, $argument)
    {
        $this->conditions[] = 'AND ' . $this->grammar->buildId($column) . ' > ' . $argument;

        return $this;
    }
688252
public function in($column, $argument)
    {
        $this->conditions = [$this->grammar->buildId($column) . ' IN(' . $argument . ')'];

        return $this;
    }
34961
public function build(...$args)
    {
        $option = $this->query->getOption();
        $sql = 'select ' . $this->parseDistinct($option->distinct)
                . $this->parseField($option->field)
                . ' from '
                . $option->table
                . $this->parseJoin($option->join)
                . $this->parseWhere($option->where)
                . $this->parseGroup($option->group)
                . $this->parseHaving($option->having)
                . $this->parseOrder($option->order)
                . $this->parseLimit($option->offset, $option->limit)
                ;
        $this->query->bindValues($this->params);
        return $sql;
    }
511821
public function join($source, $condition){
		if($this->validateConditions())
			return $this;

		if(!(is_string($source) || $source instanceof self || $source instanceof Literal))
			throw new InvalidArgumentException('Argument 1 must be a string, Neevo\\Literal or Neevo\\Result.');
		if(!(is_string($condition) || $condition instanceof Literal))
			throw new InvalidArgumentException('Argument 2 must be a string or Neevo\\Literal.');

		if($source instanceof self)
			$this->subqueries[] = $source;

		$this->resetState();
		$type = (func_num_args() > 2) ? func_get_arg(2) : '';

		$this->joins[] = array($source, $condition, $type);

		return $this;
	}
142509
public function moreOrEqual($column, $argument)
    {
        $this->conditions = [$this->grammar->buildId($column) . ' >= ' . $argument];

        return $this;
    }
647815
public function data(...$args)
    {
        $this->each(function ($item) use ($args) {
            $item->data(...$args);
        });

        return $this;
    }
25801
public function _parse($args)
    {
        $this->_values = [];
        $this->_options = [];

        if (in_array(end($args), ['', '-', '--'], true)) {
            array_pop($args);
        }

        while ($args) {
            $o = array_shift($args);
            if ($o[0] !== '-') {
                $this->_values[] = $o;
                continue;
            }

            if (preg_match('#^-((\w)|-([\w-_]+))=(.*)$#', $o, $match)) {
                $this->_options[$match[2]] = $match[4];
                continue;
            }

            if ($o[1] === '-') {
                if (strlen($o) < 3) {
                    throw new ArgumentsException(['long `:option` option is too short', 'option' => $o]);
                }

                $this->_options[substr($o, 2)] = !$args || $args[0] === '-' ? 1 : array_shift($args);
            } elseif (strlen($o) > 2) {
                if (!$args || $args[0][0] === '-') {
                    /** @noinspection PhpParamsInspection */
                    foreach (str_split(substr($o, 1), 1) as $c) {
                        $this->_options[$c] = 1;
                    }
                } else {
                    $this->_options[substr($o, 1)] = array_shift($args);
                }
            } else {
                $this->_options[substr($o, 1)] = !$args || $args[0] === '-' ? 1 : array_shift($args);
            }
        }

        return $this;
    }
1128467
public function addBuilderDirective(string $argumentName, ArgBuilderDirective $argBuilderDirective): self
    {
        $this->builderDirectives[$argumentName] = $argBuilderDirective;

        return $this;
    }
538734
public function __simple(string $class, array $args)
    {
        $config = FrameworkTools::getEditionInfo();
        $autowired = $config->autowiring ?? false;
        $annotation = $config->annotation ?? false;
        $container = FrameworkContainer::getInstance();
        $builder = new \DI\ContainerBuilder();
        $builder->useAnnotations($annotation);
        $builder->useAutowiring($autowired);
        $container = $builder->build();
        $call = $container->get($class);
        try {
            $rs = $container->call($class."::__render", array($args));
        } catch (\RuntimeException $ex) {
            throw new \RuntimeException($ex->getMessage());
        }
    }
181523
public function orCreate($args)
    {
        $query = clone $this->_queryForWrite();

        if(!$query->count())
            $this->_schema->newInstance(func_get_args())->save();

        return $this;
    }
615701
public function equal($column, $argument)
    {
        $this->conditions = [$this->grammar->buildId($column) . ' = ' . $argument];

        return $this;
    }
530855
public function where(...$args): AliasDecorator
    {
        if ($args[0] instanceof \Closure) {
            call_user_func($args[0], $this);

            return $this;
        }

        //We have to prepare only first argument
        $args[0] = $this->prepare($args[0]);

        //Routing where
        call_user_func_array([$this->query, $this->target], $args);

        return $this;
    }
1022328
public function setArguments($arguments = array())
    {
        // add additional arguments
        if (!$arguments) {
            $arguments = array();
        }
        if (!is_array($arguments)) {
            throw new BaseException('Arguments must be always an array');
        }
        $this->arguments = $args = array_merge($this->arguments, $arguments);
        foreach ($args as $arg => $val) {
            if (is_null($val)) {
                unset($this->arguments[$arg]);
            }
        }

        return $this;
    }
635147
public function set($arg1 = null, $arg2 = null)
    {
        if (is_string($arg1) && $arg2 !== null) {

            // must be initialized
            $this->template->set($arg1, $arg2);

            return $this;
        }

        if ($arg2 !== null) {
            throw new Exception([
                'Second argument to set() can be only passed if the first one is a string',
                'arg1' => $arg1,
                'arg2' => $arg2,
            ]);
        }

        if (is_scalar($arg1)) {
            $this->content = $arg1;

            return $this;
        }

        if (is_array($arg1)) {
            if (isset($arg1[0])) {
                $this->content = $arg1[0];
            }
            $this->setDefaults($arg1);

            return $this;
        }

        throw new Exception([
            'Not sure what to do with argument',
            'this' => $this,
            'arg1' => $arg1,
            'arg2' => $arg2,
        ]);
    }
761634
public function orOnWhere(...$args)
    {
        $this->createToken(
            'OR',
            $args,
            $this->joinTokens[$this->activeJoin]['on'],
            $this->onWhereWrapper()
        );

        return $this;
    }