logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll
01/10/2025, by Ivan

Om te groeperen op een bepaald veld gebruik je de methode groupBy().

$query->groupBy('uid');

Bovenstaande code geeft aan dat de query moet groeperen op het veld uid. Merk op dat de veldnaam hier een alias moet zijn die is aangemaakt met de methoden addField() of addExpression(). In de meeste gevallen wil je daarom de returnwaarde van die methoden gebruiken om zeker te zijn dat de juiste alias wordt gebruikt.

Om het aantal rijen te verkrijgen dat gegroepeerd is op een veld, zoals uid, kun je het volgende uitvoeren:

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

Om te groeperen op meerdere velden, roep je gewoon meerdere keren groupBy() aan in de gewenste volgorde.

Having

Je kunt een conditie toevoegen voor geaggregeerde waarden.

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

In dit voorbeeld worden gevallen gevonden waarbij het aantal uid’s groter of gelijk is aan $limit. Merk op dat de eerste parameter van having() niet gefilterd wordt voordat deze naar de database wordt gestuurd, dus gebruikerswaarden moeten via de tweede parameter worden doorgegeven.

Voorbeelden van groupBy en having

De volgende code telt het aantal nodes per UID:

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

Het volgende codeblok neemt het vorige voorbeeld van het tellen van nodes per uid en beperkt de resultaten tot uids die minstens 2 records hebben:

$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();