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

Aggiungere un campo

Per aggiungere un campo a una query Select, utilizza il metodo addField():

$title_field = $query->addField('n', 'title', 'my_title');

Il codice sopra indicherà alla query di selezionare il campo «title» della tabella con alias «n» e assegnargli l’alias «my_title». Se l’alias non è specificato, verrà generato automaticamente. Nella stragrande maggioranza dei casi l’alias generato sarà semplicemente il nome del campo. In questo esempio sarà «title». Se questo alias esiste già, l’alias sarà il nome della tabella seguito dal nome del campo. In questo esempio sarà «n_title». Se anche questo alias esiste già, all’alias verrà aggiunto un contatore fino a quando non verrà trovato un alias non usato, ad esempio «n_title_2».

Nota che se stai creando e popolando la query manualmente e non specifichi un alias, e l’alias predefinito non è disponibile, quasi sicuramente c’è un errore nel tuo codice. Tuttavia, se stai scrivendo un’implementazione di hook_query_alter(), non puoi sapere con certezza quali alias siano già utilizzati, quindi dovresti sempre usare l’alias generato.

Aggiungere piĂą campi

Per selezionare più campi, chiama addField() più volte nell’ordine desiderato. Nota che nella maggior parte dei casi l’ordine dei campi non dovrebbe avere importanza e, se lo ha, probabilmente c’è un problema nella logica del modulo.

In alternativa puoi usare il metodo fields() per aggiungere piĂą campi contemporaneamente.

$query->fields('n', ['nid', 'title', 'created', 'uid']);

Il metodo sopra è equivalente a chiamare addField() quattro volte, una per ciascun campo. Tuttavia, fields() non supporta la specifica di un alias per il campo. Inoltre restituisce lo stesso oggetto query, quindi il metodo può essere concatenato, invece di restituire eventuali alias generati. Se hai bisogno di conoscere l’alias generato, usa addField() o getFields() per accedere alla struttura grezza dei campi interni.

Chiamare fields() senza un elenco di campi porterà a una query «SELECT *».

$query->fields('n');

Questo farà sì che «n.*» venga incluso nell’elenco dei campi della query. Nota che non verranno creati alias. Se una tabella che usa SELECT* contiene un campo che è anche specificato direttamente da un’altra tabella, nel set di risultati potrebbe verificarsi una collisione di nomi di campo. In tal caso, il set di risultati conterrà solo uno dei campi con lo stesso nome. Per questo motivo l’uso di SELECT* non è raccomandato.

Restituire un solo campo utilizzando fetchField

Usa il metodo fetchField per restituire un solo campo con la query, ad esempio il seguente (un esempio un po’ banale):

$query = $connection->select('node', 'n');
$query->condition('n.nid', 123);
$query->addField('n', 'title');
$result = $query->execute();
return $result->fetchField();