1 views_plugin_query_default.inc views_plugin_query_default::add_having($group, $field, $value = NULL, $operator = NULL)

Add a simple HAVING clause to the query.

The caller is responsible for ensuring that all fields are fully qualified (TABLE.FIELD) and that the table and an appropriate GROUP BY already exist in the query. Internally the dbtng method "havingCondition" is used.


$group: The HAVING group to add these to; groups are used to create AND/OR sections. Groups cannot be nested. Use 0 as the default group. If the group does not yet exist it will be created as an AND group.

$field: The name of the field to check.

$value: The value to test the field against. In most cases, this is a scalar. For more complex options, it is an array. The meaning of each element in the array is dependent on the $operator.

$operator: The comparison operator, such as =, <, or >=. It also accepts more complex options such as IN, LIKE, or BETWEEN. Defaults to IN if $value is an array = otherwise. If $field is a string you have to use 'formula' here.

See also



core/modules/views/plugins/views_plugin_query_default.inc, line 952
Defines the default query object.


Object used to create a SELECT query.


function add_having($group, $field, $value = NULL, $operator = NULL) {
  // Ensure all variants of 0 are actually 0. Thus '', 0 and NULL are all
  // the default group.
  if (empty($group)) {
    $group = 0;

  // Check for a group.
  if (!isset($this->having[$group])) {
    $this->set_where_group('AND', $group, 'having');

  // Add the clause and the args.
  $this->having[$group]['conditions'][] = array(
    'field' => $field,
    'value' => $value,
    'operator' => $operator,