logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
18/06/2025, by Ivan

Um nach einem bestimmten Feld zu gruppieren, verwenden Sie die Methode groupBy().

$query->groupBy('uid');

Der obige Code weist die Abfrage an, nach dem Feld uid zu gruppieren. Beachten Sie, dass der Feldname hier ein Alias sein muss, der durch die Methoden addField() oder addExpression() erstellt wurde. In den meisten Fällen möchten Sie daher den Rückgabewert dieser Methoden verwenden, um sicherzustellen, dass der richtige Alias genutzt wird.

Um die Anzahl der nach einem Feld, z. B. uid, gruppierten Zeilen zu erhalten, können Sie Folgendes ausführen:

$query->addExpression('count(uid)', 'uid_node_count');

Um nach mehreren Feldern zu gruppieren, rufen Sie groupBy() einfach mehrmals in der gewünschten Reihenfolge auf.

Having

Sie können eine Bedingung für aggregierte Werte hinzufügen.

$query->having('COUNT(uid) >= :matches', [':matches' => $limit]);

In diesem Beispiel werden Fälle gefunden, bei denen die Anzahl der uid-Werte größer oder gleich $limit ist. Beachten Sie, dass der erste Parameter von having nicht vor dem Senden an die Datenbank gefiltert wird, daher sollten benutzerdefinierte Werte immer über den zweiten Parameter übergeben werden.

Beispiele für groupBy und having

Der folgende Code zählt die Anzahl der Nodes pro UID:

$query = $connection->select('node', 'n')
  ->fields('n', ['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->execute();

Der folgende Code erweitert das vorherige Beispiel und begrenzt die Ergebnisse auf UIDs, die mindestens 2 Einträge haben:

$query = $connection->select('node', 'n')
    ->fields('n',['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->having('COUNT(uid) >= :matches', [':matches' => 2]);
$results = $query->execute();

 

Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.