¿Cómo hacer consultas SQL en Drupal 8?

En ocasiones, necesitamos hacer una consulta a la base de datos de Drupal 8, y obtener ciertas informaciones.

En este día, te enseñaré a realizar de dos maneras consultas a la base de datos de Drupal.

Para esto, necesitaremos instalar estos módulos:

https://www.drupal.org/project/devel

https://www.drupal.org/project/devel_php

Una vez instalados estos módulos, activaremos todos los módulos relacionados con el devel.

Luego iremos a la siguiente ruta: tudrupal/devel/php.

y en este cuadro realizaremos lo siguiente:

//Creamos una variable con la conexión a la base de datos.
$connection = \Drupal::database();
//Hacemos una consulta a la base de datos.
$query = $connection->query("SELECT * FROM {node} limit 5");
//Obtenemos los resultados de la consulta en la variable $result
$result = $query->fetchAll();
//hacemos uso de la función ksm que viene con el modulo devel llamado Devel Kint.
ksm($result);

Nota: si al ejecutar ksm, no muestra ninguna información, entonces debes hacer los siguientes ajustes si usas XAMPP para hacer estas pruebas. 

Si te funcionó correctamente, entonces debe aparecer algo como esto:

Resultado de setencias sql con KSM

Como podemos observar, con la función ksm podemos los primeros 5 registros que están en la tabla node.

Ahora vamos a explicar cada una de las sintaxis:

$connection = \Drupal::database();

Con el código anterior, creamos una variable llamada $connection, el cual va a tener la conexión a la base de datos de Drupal.

$query = $connection->query("SELECT * FROM {node} limit 5");

Con el código anterior le decimos a Drupal, que con la función query que tiene la variable $conecction, haremos nuestra consulta SQL.

Quiero destacar que en el código anterior, veremos que el nombre de la tabla está con {}

¿Por qué hacemos esto así?

Porque a veces, ponemos en la instalación de Drupal, que comience con un prefijo en cada tabla, y poniendolo entre llaves, nos olvidamos del prefijo.

$result = $query->fetchAll();

Con el código anterior, pasamos a la variable $result, la información obtenida de la tabla.

ksm($result);

Con el código anterior, usamos la función KSM para poder ver la información que tiene la variable result. 

Para acceder a los datos que están en la variable $result, solo basta recorrer esta variable:

Un ejemplo sería:

foreach ($result as $record) {
  ksm($record);
  dpm($record->nid);
}

En el código anterior, vemos con KSM la información que tiene la variable $record, y con la función DPM del módulo devel, podemos ver el valor que tiene el campo nid.

Si quieremos ver otro campo, solo basta cambiar NID por el campo que quieres y listo.

Otra manera de poder realizar consultas sql, es a través del API de Drupal.

// Creamos la variable $connection que contiene la conexión a la base de datos de Drupal.
$connection = \Drupal::database();

// Con la función select, procedemeos a decirle el nombre de la tabla que queremos y una letra que represente esa tabla
$query = $connection->select('users', 'u');
 
// Agregamos una condicción indicando que queremos todos los usuarios donde el campo uid sea diferente al id 0
$query->condition('u.uid', 0, '<>')
//aquí ponemos todos los campos que queremos obtener.
  ->fields('u', ['uid', 'langcode', 'uuid'])
//aqui ponemos el rango de datos que queremos mostrar.
  ->range(0, 5);

//obtenemos en la variable $result la información de los campos.
$result = $query->execute()->fetchAll();
//mostramos con KSM la información contenida en el campo $result.
ksm($result);

Cada linea está comentada. 

Si quieren saber mas, no duden en escribirme.

Un saludo y Dios les bendiga. 

Etiquetas

Añadir nuevo comentario

Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

Comparte este artículo