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

Veld toevoegen

Om een veld toe te voegen aan een SELECT-query, gebruik je de methode addField():

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

Bovenstaande code geeft aan dat de query het veld title van de tabel met alias n moet selecteren en er de alias my_title aan moet geven. Als er geen alias wordt opgegeven, wordt er automatisch één gegenereerd. In de meeste gevallen zal de gegenereerde alias gewoon de veldnaam zijn. In dit voorbeeld dus title. Als die alias al bestaat, wordt de alias de combinatie van tabelnaam en veldnaam. In dit voorbeeld zou dat n_title zijn. Als die alias ook al bestaat, wordt er een teller toegevoegd totdat er een niet-gebruikte alias wordt gevonden, bijvoorbeeld n_title_2.

Merk op dat als je zelf een query aanmaakt en invult en geen alias opgeeft, terwijl de standaardalias niet beschikbaar is, er vrijwel zeker een fout in je code zit. Echter, als je een implementatie schrijft van hook_query_alter(), weet je nooit zeker welke aliassen al in gebruik zijn, dus moet je altijd de gegenereerde alias gebruiken.

Meerdere velden toevoegen

Om meerdere velden te selecteren, roep je addField() meerdere keren aan in de gewenste volgorde. Merk op dat in de meeste gevallen de volgorde van velden er niet toe zou moeten doen, en als dat wel zo is, is er waarschijnlijk een probleem in de businesslogica van de module.

Als alternatief kun je de methode fields() gebruiken om meerdere velden tegelijk toe te voegen.

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

Bovenstaande methode is equivalent aan het vier keer aanroepen van addField(), één keer per veld. Echter, fields() ondersteunt geen aliassen voor velden. Het retourneert ook het queryobject zelf, zodat de methode in een chain kan worden gebruikt, maar geen gegenereerde aliassen teruggeeft. Als je de gegenereerde alias moet weten, gebruik dan addField() of getFields() om toegang te krijgen tot de interne veldstructuur.

Het aanroepen van fields() zonder een lijst van velden resulteert in een query SELECT *.

$query->fields('n');

Dit zal n.* opnemen in de lijst van velden in de query. Merk op dat er geen aliassen worden aangemaakt. Als de tabel die met SELECT * wordt gebruikt een veld bevat dat ook expliciet uit een andere tabel is geselecteerd, kan er in de resultset een naamconflict ontstaan. In dat geval bevat de resultset slechts één van de velden met die naam. Daarom wordt het gebruik van SELECT * afgeraden.

Slechts één veld retourneren met fetchField

Gebruik de methode fetchField() om slechts één veld uit de query te retourneren, bijvoorbeeld als volgt (een wat kunstmatig voorbeeld):

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