diff --git a/laravel/database/query.php b/laravel/database/query.php old mode 100644 new mode 100755 index fa6a4c8cf90..0b2029c144b --- a/laravel/database/query.php +++ b/laravel/database/query.php @@ -342,6 +342,67 @@ public function or_where_not_in($column, $values) { 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. diff --git a/laravel/database/query/grammars/grammar.php b/laravel/database/query/grammars/grammar.php old mode 100644 new mode 100755 index 3e828cffae9..d5d8a2e7de5 --- a/laravel/database/query/grammars/grammar.php +++ b/laravel/database/query/grammars/grammar.php @@ -242,6 +242,33 @@ protected function where_not_in($where) 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. *