Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Trabajar con una base de datos en Drupal 7 - Lección 9 - Solicitudes UPDATE

12/05/2025, by Ivan

Las consultas de actualización siempre deben utilizar el constructor de consultas. Las diferentes bases de datos tienen controladores específicos para LOB (Large OBject, como TEXT en MySQL) y campos BLOB (Binary Large OBject), por lo que se requiere un nivel de abstracción para que los controladores individuales puedan implementar dichos controladores específicos.

Las consultas de actualización deben comenzar con la función db_update():

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

Al crear este objeto de consulta de actualización, modificaremos uno o más registros en la tabla node. Observa que no se requieren llaves {}, el constructor de consultas maneja automáticamente los nombres de las tablas.

El objeto de consulta de actualización utiliza una API fluida (fluent API). Por lo tanto, todos los métodos (excepto execute()) devuelven el propio objeto de consulta, lo que permite encadenar métodos. En muchos casos, esto significa que no es necesario guardar el objeto de consulta como una variable.

Las consultas de actualización son simples y constan de un conjunto de pares clave/valor establecidos junto con un conjunto de condiciones WHERE. Analizaremos completamente la estructura de WHERE en una lección futura, aquí solo la mencionaremos superficialmente.

Una consulta de actualización típica es la siguiente:

<?php
/* Este terrible ejemplo muestra cómo actualizar registros en la tabla node */
$num_updated = db_update('node')
  ->fields(array(
    'uid' => 5,
    'status' => 1,
  ))
  ->condition('created', REQUEST_TIME - 3600, '>=')
  ->execute();
?>

Este ejemplo es equivalente a la siguiente consulta SQL:

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

El ejemplo anterior actualizará todos los registros de la tabla node creados en la última hora y establecerá su uid a 5 y el campo status a 1. El método fields() acepta un array asociativo que indica qué campos se deben actualizar y con qué nuevos valores. A diferencia de las consultas de inserción, UpdateQuery::fields() solo admite arrays asociativos. El orden de los campos en el array y el orden en que se llaman los métodos no importa.

El método execute() devolverá el número de filas afectadas por la consulta. Ten en cuenta que "afectadas" no significa todas las que cumplen con la condición WHERE. Por ejemplo, si ya existen nodos con uid=5 y status=1, podrían coincidir con la condición WHERE, pero no serán actualizados porque ya tienen los valores especificados. Por lo tanto, las consultas de actualización no siempre reflejan con precisión cuántas filas tienen los valores finales uid=5 y status=1.