Commit 9057c60a authored by Taylor Otwell's avatar Taylor Otwell

Merge pull request #584 from bencorlett/develop

Adding having() support to the Fluent query builder.
parents 26730cd5 af6d76f7
...@@ -70,6 +70,13 @@ class Query { ...@@ -70,6 +70,13 @@ class Query {
*/ */
public $groupings; public $groupings;
/**
* The HAVING clauses.
*
* @var array
*/
public $havings;
/** /**
* The ORDER BY clauses. * The ORDER BY clauses.
* *
...@@ -475,6 +482,22 @@ class Query { ...@@ -475,6 +482,22 @@ class Query {
return $this; return $this;
} }
/**
* Add a having to the query.
*
* @param string $column
* @param string $operator
* @param mixed $value
*/
public function having($column, $operator, $value)
{
$this->havings[] = compact('column', 'operator', 'value');
$this->bindings[] = $value;
return $this;
}
/** /**
* Add an ordering to the query. * Add an ordering to the query.
* *
......
...@@ -19,7 +19,7 @@ class Grammar extends \Laravel\Database\Grammar { ...@@ -19,7 +19,7 @@ class Grammar extends \Laravel\Database\Grammar {
*/ */
protected $components = array( protected $components = array(
'aggregate', 'selects', 'from', 'joins', 'wheres', 'aggregate', 'selects', 'from', 'joins', 'wheres',
'groupings', 'orderings', 'limit', 'offset', 'groupings', 'havings', 'orderings', 'limit', 'offset',
); );
/** /**
...@@ -286,6 +286,24 @@ class Grammar extends \Laravel\Database\Grammar { ...@@ -286,6 +286,24 @@ class Grammar extends \Laravel\Database\Grammar {
return 'GROUP BY '.$this->columnize($query->groupings); return 'GROUP BY '.$this->columnize($query->groupings);
} }
/**
* Compile the HAVING clause for a query.
*
* @param Query $query
* @return string
*/
protected function havings(Query $query)
{
if (is_null($query->havings)) return '';
foreach ($query->havings as $having)
{
$sql[] = 'AND '.$this->wrap($having['column']).' '.$having['operator'].' '.$this->parameter($having['value']);
}
return 'HAVING '.preg_replace('/AND /', '', implode(' ', $sql), 1);
}
/** /**
* Compile the ORDER BY clause for a query. * Compile the ORDER BY clause for a query.
* *
......
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