Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Sql.php

function Sql::getNonAggregates

Returns a list of non-aggregates to be added to the "group by" clause.

Non-aggregates are fields that have no aggregation function (count, sum, etc) applied. Since the SQL standard requires all fields to either have an aggregation function applied, or to be in the GROUP BY clause, Views gathers those fields and adds them to the GROUP BY clause.

Return value

array An array of the fieldnames which are non-aggregates.

1 call to Sql::getNonAggregates()
Sql::query in core/modules/views/src/Plugin/views/query/Sql.php
Generates a query and count query from all of the information supplied.

File

core/modules/views/src/Plugin/views/query/Sql.php, line 1217

Class

Sql
Views query plugin for an SQL query.

Namespace

Drupal\views\Plugin\views\query

Code

protected function getNonAggregates() {
    $non_aggregates = [];
    foreach ($this->fields as $field) {
        $string = '';
        if (!empty($field['table'])) {
            $string .= $field['table'] . '.';
        }
        $string .= $field['field'];
        $fieldname = !empty($field['alias']) ? $field['alias'] : $string;
        if (!empty($field['count'])) {
            // Retained for compatibility.
            $field['function'] = 'count';
        }
        if (!empty($field['function'])) {
            $this->hasAggregate = TRUE;
        }
        elseif (empty($field['table'])) {
            $non_aggregates[] = $fieldname;
        }
        elseif (empty($field['aggregate'])) {
            $non_aggregates[] = $fieldname;
        }
        if ($this->getCountOptimized) {
            // We only want the first field in this case.
            break;
        }
    }
    return $non_aggregates;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal