Commit 5f483872 authored by Stan Bondi's avatar Stan Bondi

Ref #649 - Added query builder support for BETWEEN clauses

Signed-off-by: 's avatarStan Bondi <stan@stanley-pc.(none)>
parent 2e836499
......@@ -342,6 +342,67 @@ class Query {
{
return $this->where_not_in($column, $values, 'OR');
}
/**
* Add a BETWEEN condition to the query
*
* @param string $column
* @param mixed $min
* @param mixed $max
* @param string $connector
* @param boolean $not
* @return Query
*/
public function where_between($column, $min, $max, $connector = 'AND', $not = false)
{
$type = ($not) ? 'where_not_between' : 'where_between';
$this->wheres[] = compact('type', 'column', 'min', 'max', 'connector');
$this->bindings[] = $min;
$this->bindings[] = $max;
return $this;
}
/**
* Add a OR BETWEEN condition to the query
*
* @param string $column
* @param mixed $min
* @param mixed $max
* @return Query
*/
public function or_where_between($column, $min, $max)
{
return $this->where_between($column, $min, $max, 'OR');
}
/**
* Add a NOT BETWEEN condition to the query
*
* @param string $column
* @param mixed $min
* @param mixed $max
* @return Query
*/
public function where_not_between($column, $min, $max, $connector = 'AND')
{
return $this->where_between($column, $min, $max, $connector, true);
}
/**
* Add a OR NOT BETWEEN condition to the query
*
* @param string $column
* @param mixed $min
* @param mixed $max
* @return Query
*/
public function or_where_not_between($column, $min, $max)
{
return $this->where_not_between($column, $min, $max, 'OR');
}
/**
* Add a where null condition to the query.
......
......@@ -242,6 +242,33 @@ class Grammar extends \Laravel\Database\Grammar {
return $this->wrap($where['column']).' NOT IN ('.$parameters.')';
}
/**
* Compile a WHERE BETWEEN clause
*
* @param array $where
* @return string
*/
protected function where_between($where)
{
$min = $this->parameter($where['min']);
$max = $this->parameter($where['max']);
return $this->wrap($where['column']).' BETWEEN '.$min.' AND '.$max;
}
/**
* Compile a WHERE NOT BETWEEN clause
* @param array $where
* @return string
*/
protected function where_not_between($where)
{
$min = $this->parameter($where['min']);
$max = $this->parameter($where['max']);
return $this->wrap($where['column']).' NOT BETWEEN '.$min.' AND '.$max;
}
/**
* Compile a WHERE NULL clause.
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment