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

Werken met de database in Drupal 7 – les 9 – Updatequery’s (UPDATE)

14/10/2025, by Ivan

Updatequery’s moeten altijd gebruikmaken van de querybuilder. Verschillende databases hebben specifieke handlers voor LOB’s (Large Objects, zoals TEXT in MySQL) en BLOB’s (Binary Large Objects), waardoor een abstractielaag nodig is om per driver deze specifieke bewerkingen correct te verwerken.

Updatequery’s beginnen met de functie db_update():

<?php
$query = db_update('node', $options);
?>

Door dit updatequery-object te maken, gaan we één of meer records in de tabel node aanpassen. Merk op dat je geen accolades rond de tabelnaam hoeft te gebruiken — de querybuilder verwerkt dat automatisch.

Het updatequery-object gebruikt een Fluent API. Dat betekent dat alle methoden (behalve execute()) het query-object zelf retourneren, zodat je method chaining kunt gebruiken. In veel gevallen hoeft de query dus niet in een variabele te worden opgeslagen.

Updatequery’s zijn eenvoudig opgebouwd en bestaan uit een reeks sleutel/waarde-paren die worden gecombineerd met een set WHERE-voorwaarden. De volledige structuur van WHERE zullen we in een volgende les uitgebreid behandelen — hier beperken we ons tot de basis.

Een typisch voorbeeld van een updatequery ziet er als volgt uit:

<?php
/* Dit voorbeeld toont hoe je records in de tabel node kunt bijwerken */
$num_updated = db_update('node')
  ->fields(array(
    'uid' => 5,
    'status' => 1,
  ))
  ->condition('created', REQUEST_TIME - 3600, '>=')
  ->execute();
?>

Het bovenstaande voorbeeld is equivalent aan de volgende SQL-query:

UPDATE {node} SET uid = 5, status = 1 WHERE created >= 1221717405;

Dit voorbeeld zal alle records in de tabel node bijwerken die in het afgelopen uur zijn aangemaakt, en daarbij uid instellen op 5 en status op 1. De methode fields() accepteert één associatieve array waarin wordt beschreven welke velden moeten worden bijgewerkt en welke waarden moeten worden ingesteld. Merk op dat, in tegenstelling tot insert-query’s, UpdateQuery::fields() alleen associatieve arrays ondersteunt. De volgorde van de velden in de array of in de methodeaanroepen is niet belangrijk.

De methode execute() retourneert het aantal rijen dat door de query is bijgewerkt. Let op: “bijgewerkt” betekent niet noodzakelijkerwijs dat alle records die voldoen aan de WHERE-voorwaarde zijn gewijzigd. Als er bijvoorbeeld al nodes zijn met uid = 5 en status = 1, voldoen deze aan de voorwaarde, maar worden ze niet aangepast omdat de waarden identiek blijven. Daarom geeft een updatequery niet altijd exact weer hoeveel records momenteel uid = 5 en status = 1 hebben.