diff --git a/src/Illuminate/Database/Query/Grammars/Grammar.php b/src/Illuminate/Database/Query/Grammars/Grammar.php index 5fe0931a35bb..8e0447e20f9b 100755 --- a/src/Illuminate/Database/Query/Grammars/Grammar.php +++ b/src/Illuminate/Database/Query/Grammars/Grammar.php @@ -456,7 +456,7 @@ protected function compileHavings(Builder $query, $havings) { $sql = implode(' ', array_map(array($this, 'compileHaving'), $havings)); - return 'having '.preg_replace('/and /', '', $sql, 1); + return 'having '.preg_replace('/and |or /', '', $sql, 1); } /** diff --git a/tests/Database/DatabaseQueryBuilderTest.php b/tests/Database/DatabaseQueryBuilderTest.php index e2ebd7e890aa..b1d9e1d20d4a 100755 --- a/tests/Database/DatabaseQueryBuilderTest.php +++ b/tests/Database/DatabaseQueryBuilderTest.php @@ -450,6 +450,12 @@ public function testHavings() $builder->select('*')->from('users')->having('email', '>', 1); $this->assertEquals('select * from "users" having "email" > ?', $builder->toSql()); + $builder = $this->getBuilder(); + $builder->select('*')->from('users') + ->orHaving('email', '=', 'test@example.com') + ->orHaving('email', '=', 'test2@example.com'); + $this->assertEquals('select * from "users" having "email" = ? or "email" = ?', $builder->toSql()); + $builder = $this->getBuilder(); $builder->select('*')->from('users')->groupBy('email')->having('email', '>', 1); $this->assertEquals('select * from "users" group by "email" having "email" > ?', $builder->toSql());