Trabajar con una base de datos en Drupal 7 - Lección 2 - Configuración de la base de datos
El principal medio para definir la conexión a la base de datos en Drupal es el array $databases en el archivo settings.php. Como sugiere el nombre, $databases permite definir múltiples conexiones a bases de datos. También admite la definición de múltiples objetivos. La conexión no se abre (no se crea un objeto de conexión) hasta que algún fragmento de código realice una consulta a la base de datos por primera vez.
Trabajar con una base de datos en Drupal 7 - Lección 3 - Consultas estáticas (SELECT)
La forma más general de consulta en Drupal es la consulta estática. Una consulta estática será enviada a la base de datos literalmente. Solo las consultas de selección (select) pueden ser estáticas.
Las consultas estáticas deben usarse únicamente en consultas muy simples. Debes utilizar consultas dinámicas si necesitas crear una consulta compleja, una consulta generada dinámicamente o modificable tras su ejecución.
Una forma sencilla de ejecutar una consulta estática es a través del método de consulta:
Trabajar con una base de datos en Drupal 7 - Lección 4 - Consultas dinámicas (SELECT)
Probablemente hemos llegado a la parte más interesante del Database API de Drupal: las consultas dinámicas. Se llaman dinámicas porque Drupal completa dinámicamente la cadena de la consulta. Todas las consultas de inserción, actualización, eliminación o fusión pueden ser dinámicas. Las consultas de selección pueden ser tanto dinámicas como estáticas. No obstante, se recomienda usar consultas dinámicas incluso para las consultas de selección.
¿En qué consiste un módulo de Drupal 7?
Antes de comenzar a crear nuestro módulo, voy a hablar un poco más sobre las capacidades del API de Drupal. El API proporciona amplias posibilidades para trabajar con taxonomía, nodos, usuarios, entrada y salida de base de datos. Para la interacción entre módulos y el núcleo de Drupal, así como entre los propios módulos, Drupal cuenta con un sistema de hooks. Un hook es una llamada de retorno de función, es decir, cuando la ejecución del código llega al hook, se añade el código de nuestra función, que escribimos en nuestro módulo.
Creación de un módulo en Drupal, inicio rápido
Comencemos con api.drupal.org, abre la página del hook hook_node_presave(), que se ejecuta antes de guardar un nodo.
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Los hooks nos permiten insertar nuestro código en el flujo habitual de Drupal, agregar validaciones, campos de datos, elementos de formularios, etc.
Agregamos nuestro módulo en la carpeta sites/all/modules
:
Trabajar con una base de datos en Drupal 7 - Lección 12 - Condiciones de consulta (WHERE, HAVING, LIKE)
Una condición de consulta permite seleccionar solo aquellos registros que cumplen ciertas restricciones, por ejemplo, nodos creados hace no más de dos semanas, términos que contienen la palabra "drupal", etc. En SQL usamos WHERE y HAVING para establecer condiciones en consultas SELECT, UPDATE, DELETE. En las consultas dinámicas también se implementa un mecanismo para trabajar con condiciones de consulta. Este mecanismo funciona igual para los tres tipos de consulta: selección, actualización, eliminación.
Trabajar con bases de datos en Drupal 7 - Lección 11 - Consultas MERGE
Las consultas de fusión (merge) son un tipo especial de consultas híbridas. Aunque la sintaxis para este tipo de consultas fue definida en SQL 2003, en realidad casi ninguna base de datos la soporta directamente. Sin embargo, la mayoría de las bases de datos proporcionan una implementación alternativa usando sintaxis específica. El constructor de consultas de fusión en Drupal abstrae el concepto de consulta de fusión dentro de una estructura de objeto, de modo que dicho objeto puede compilarse de forma diferente para cada base de datos según sus particularidades.
Trabajar con bases de datos en Drupal 7 - Lección 10 - Solicitudes de eliminación (DELETE)
Las consultas de eliminación deben utilizar el constructor de consultas. Comienzan con la función db_delete()
:
Trabajar con una base de datos en Drupal 7 - Lección 9 - Solicitudes UPDATE
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()
:
Trabajar con bases de datos en Drupal 7 - Lección 8 - Consultas de inserción (INSERT INTO)
Las consultas de inserción siempre deben usar el constructor de consultas. Algunas bases de datos requieren controladores especiales para campos LOB (Large OBject, como texto en MySQL) y BLOB (Binary Large OBject), por lo que se necesita un nivel de abstracción para que los controladores de BD individuales puedan implementar estos controladores.
Las consultas de inserción comienzan utilizando la función db_insert()
: