logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Travail avec la base de données dans Drupal 7 - leçon 1 - API de base de données Drupal (db api)

06/07/2025, by Ivan

Si vous avez écrit des modules pour la version 6 de Drupal, la transition vers la nouvelle API base de données de Drupal 7 ne sera pas difficile pour vous. La nouvelle API DB repose sur l’extension PHP PDO, ce qui lui permet de fonctionner avec différentes bases de données comme MySQL, PostgreSQL, MSSQL, et possiblement Oracle. Concernant la facilité, il est difficile de se prononcer ; il faut s’habituer à la nouvelle syntaxe, car écrire des requêtes SQL directement est souvent plus naturel.

Voici un extrait de la documentation officielle :

Drupal 7 Database API fournit un niveau d’abstraction standard et intuitif pour accéder au serveur de base de données. Cette API est conçue pour conserver la puissance et la syntaxe du SQL autant que possible, mais aussi :

  • Supporte facilement plusieurs serveurs de base de données ;
  • Permet aux développeurs de créer des fonctions avancées de base de données comme les transactions ;
  • Fournit une interface structurée pour construire dynamiquement des requêtes ;
  • Assure la sécurité et les bonnes pratiques de développement ;
  • Donne aux modules une interface propre pour intercepter et modifier les requêtes du site ;
  • La documentation principale de l’API base de données est directement intégrée dans les commentaires du code. La section Handbook est enrichie d’une documentation API pour les développeurs souhaitant travailler efficacement avec les bases de données, notamment sous l’angle administratif. Le Handbook ne couvre toutefois pas toutes les fonctionnalités de l’API.
  • L’API base de données est conçue en programmation orientée objet (POO) et ce document suppose une connaissance minimale de ce paradigme. Toutefois, la plupart des opérations courantes ont une forme fonctionnelle et les développeurs peuvent choisir d’utiliser cette approche pour écrire leur code.

Concept principal de l’API base de données Drupal

Le niveau d’abstraction base de données (ou couche db) dans Drupal est construit sur la bibliothèque PHP PDO. PDO fournit une API orientée objet unifiée pour accéder à diverses bases de données, mais ne gère pas les différences syntaxiques SQL entre les serveurs.

Drivers

Étant donné que chaque type de base de données requiert une interaction spécifique, la couche db de Drupal exige un driver par type de base. Chaque driver est constitué d’une série de fichiers situés dans includes/database/driver, où driver est une chaîne unique identifiant ce driver. Dans la plupart des cas, le nom du driver correspond au nom de la base en minuscules, par exemple "mysql", "pgsql" ou "mycustomdriver".

Chaque driver contient plusieurs classes dérivées des classes parent dans le noyau Drupal. Ces classes peuvent redéfinir tout comportement nécessaire pour supporter correctement la base spécifique. Les classes du driver sont nommées en ajoutant un suffixe underscore suivi du nom du driver en minuscules. Par exemple, la version spécifique à MySQL de InsertQuery est nommée InsertQuery_mysql.

Connexion à la base

Une connexion est un objet de la classe DatabaseConnection, qui hérite de la classe PDO. Chaque base connectée dans Drupal possède une connexion unique et son objet associé. La classe de connexion peut être une sous-classe spécifique à chaque driver.

Pour accéder à un objet connexion :

<?php
$conn = Database::getConnection($target, $key);
?>

Pour accéder à la connexion active actuelle :

<?php
$conn = Database::getConnection();
?>

La plupart du temps, vous n’aurez pas besoin d’interroger directement l’objet connexion. Une fonction enveloppante s’en chargera pour vous. La seule raison de le faire est si vous effectuez des requêtes complexes sur plusieurs bases et ne souhaitez pas changer la connexion active.

Pour définir la connexion active, utilisez :

<?php
db_set_active($key);
?>

Requêtes à la base de données

Une requête est une expression SQL envoyée via la connexion. L’API Drupal supporte 6 types de requêtes : statiques (Static), dynamiques (Dynamic), insertions (Insert), mises à jour (Update), suppressions (Delete) et fusion (Merge). Certaines requêtes écrites en SQL peuvent remplacer le constructeur de requêtes orienté objet. L’objet requête fait référence au constructeur pour choisir le type.

Écriture d’une requête

Une déclaration d’objet résulte toujours d’une requête SELECT. Ce sera toujours un objet de type DatabaseStatement ou une sous-classe. DatabaseStatement étend PDOStatement.

Drupal utilise des déclarations préparées pour toutes les requêtes. Une déclaration préparée est un modèle de requête dans lequel les valeurs sont insérées lors de l’exécution. Elle est similaire à une requête SQL préparée avec paramètres, qui peut être réutilisée plusieurs fois.

Drupal ne dévoile pas directement la déclaration préparée. Le développeur utilise l’objet requête sans SQL direct, puis exécute la requête.