diff --git a/MysqliDb.php b/MysqliDb.php index f9186a62..e6973a50 100644 --- a/MysqliDb.php +++ b/MysqliDb.php @@ -784,13 +784,19 @@ public function orWhere($whereProp, $whereValue = 'DBNULL', $operator = '=') * @return MysqliDb */ - public function having($havingProp, $havingValue = null, $operator = null) + public function having($havingProp, $havingValue = 'DBNULL', $operator = '=', $cond = 'AND') { - if ($operator) { - $havingValue = array($operator => $havingValue); + // forkaround for an old operation api + if (is_array($havingValue) && ($key = key($havingValue)) != "0") { + $operator = $key; + $havingValue = $havingValue[$key]; + } + + if (count($this->_having) == 0) { + $cond = ''; } - $this->_having[] = array("AND", $havingValue, $havingProp); + $this->_having[] = array($cond, $havingProp, $operator, $havingValue); return $this; } @@ -807,12 +813,7 @@ public function having($havingProp, $havingValue = null, $operator = null) */ public function orHaving($havingProp, $havingValue = null, $operator = null) { - if ($operator) { - $havingValue = Array($operator => $havingValue); - } - - $this->_having[] = Array("OR", $havingValue, $havingProp); - return $this; + return $this->having($havingProp, $havingValue, $operator, 'OR'); } /**