logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
01/10/2025, by Ivan

Per raggruppare in base a un determinato campo, utilizza il metodo groupBy().

$query->groupBy('uid');

Il codice sopra indicherà alla query di raggruppare per il campo uid. Nota che il nome del campo qui deve essere un alias creato dai metodi addField() o addExpression(), quindi nella maggior parte dei casi vorrai usare il valore restituito da questi metodi per assicurarti che venga usato l’alias corretto.

Per ottenere il conteggio delle righe raggruppate per un campo, ad esempio uid, puoi fare quanto segue:

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

Per raggruppare per più campi, basta chiamare groupBy() più volte nell’ordine desiderato.

Having

È possibile aggiungere una condizione per i valori aggregati.

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

In questo esempio verranno trovati i casi in cui il numero di identificatori uid è maggiore o uguale a $limit. Nota che il primo parametro di having non viene filtrato prima dell’invio al database, quindi i valori forniti dall’utente devono essere passati attraverso il secondo parametro.

Esempi di groupBy e having

Il seguente codice conta il numero di nodi per UID:

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

Il blocco di codice seguente prende l’esempio precedente di conteggio dei nodi per uid e limita i risultati agli uid che hanno almeno 2 record.

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