Travail avec la base de donnĂ©es dans Drupal 7 - leçon 3 - RequĂȘtes statiques (SELECT)
La forme la plus gĂ©nĂ©rale d'une requĂȘte dans Drupal est la requĂȘte statique. Une requĂȘte statique sera transmise Ă la base de donnĂ©es telle quelle. Seule la requĂȘte de sĂ©lection (select) peut ĂȘtre statique.
Il ne faut utiliser les requĂȘtes statiques que pour des requĂȘtes trĂšs simples. Vous devriez utiliser des requĂȘtes dynamiques si vous devez Ă©crire une requĂȘte complexe, créée dynamiquement ou modifiĂ©e aprĂšs exĂ©cution.
Une maniĂšre simple dâexĂ©cuter une requĂȘte statique est via la mĂ©thode query :
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 4 - RequĂȘtes dynamiques (SELECT)
Nous sommes probablement arrivĂ©s Ă la partie la plus intĂ©ressante de l'API Database de Drupal : les requĂȘtes dynamiques. Ces requĂȘtes sont dites dynamiques car Drupal gĂ©nĂšre dynamiquement la chaĂźne de la requĂȘte. Toutes les requĂȘtes d'insertion, mise Ă jour, suppression ou fusion peuvent ĂȘtre dynamiques. Les requĂȘtes de sĂ©lection peuvent ĂȘtre dynamiques ou statiques. Toutefois, il est recommandĂ© d'utiliser des requĂȘtes dynamiques mĂȘme pour la sĂ©lection.
Travail avec la base de données dans Drupal 7 - leçon 5 - Extenders (Extensions)
Les requĂȘtes de sĂ©lection supportent les extensions (extenders). Une extension permet dâajouter des fonctionnalitĂ©s Ă une requĂȘte de sĂ©lection lors de son exĂ©cution. Cette fonctionnalitĂ© peut ĂȘtre une mĂ©thode supplĂ©mentaire ou modifier le comportement dâune mĂ©thode existante.
Pour cela, des patterns de programmation orientée objet sont utilisés ; les extensions implémentent le Decorator Pattern. Elles ajoutent des responsabilités supplémentaires à un objet dynamique en fournissant une sous-classe alternative flexible pour la méthode étendue.
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 6 - Modification dynamique de requĂȘte (hook_query_alter)
Une caractĂ©ristique importante des requĂȘtes dynamiques de sĂ©lection est la possibilitĂ© pour dâautres modules de modifier ces requĂȘtes Ă la volĂ©e. Cela permet Ă ces modules dâinsĂ©rer leurs propres instructions dans la requĂȘte, influençant ainsi son comportement ou appliquant des modifications pendant lâexĂ©cution, par exemple pour gĂ©rer les droits dâaccĂšs aux nĆuds. Trois composants interviennent dans la modification dynamique des requĂȘtes : les tags, les mĂ©ta-donnĂ©es et le hook hook_query_alter().
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 7 - Traitement des rĂ©sultats de requĂȘte (fetch)
Une requĂȘte de sĂ©lection retournera toujours un rĂ©sultat contenant zĂ©ro ou plusieurs enregistrements. Il existe plusieurs façons de traiter les donnĂ©es du rĂ©sultat que vous pouvez utiliser selon vos besoins.
Le plus souvent, les résultats sont utilisés dans une boucle foreach()
.
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 8 - RequĂȘtes dâinsertion (INSERT INTO)
Les requĂȘtes d'insertion doivent toujours utiliser le constructeur de requĂȘtes. Certaines bases de donnĂ©es nĂ©cessitent des gestionnaires spĂ©cifiques pour les champs LOB (Large OBject, comme le texte dans MySQL) et BLOB (Binary Large OBject), d'oĂč l'importance du niveau d'abstraction pour que les pilotes DB implĂ©mentent ces gestionnaires.
Les requĂȘtes d'insertion commencent par l'utilisation de la fonction db_insert()
:
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 9 - RequĂȘtes de mise Ă jour (UPDATE)
Les requĂȘtes de mise Ă jour doivent toujours utiliser le constructeur de requĂȘtes. Les diffĂ©rentes bases de donnĂ©es ont des gestionnaires spĂ©cifiques pour les LOB (Large OBject, tels que TEXT dans MySQL) et les champs BLOB (Binary Large OBject), donc un niveau dâabstraction est nĂ©cessaire pour que les pilotes individuels implĂ©mentent leurs gestionnaires spĂ©cifiques.
Les requĂȘtes de mise Ă jour commencent toujours par la fonction db_update()
:
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 10 - RequĂȘtes de suppression (DELETE)
Les requĂȘtes de suppression doivent utiliser le constructeur de requĂȘtes. Elles commencent par la fonction db_delete() :
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 11 - RequĂȘtes de fusion (MERGE)
Les requĂȘtes de fusion sont un type spĂ©cial hybride de requĂȘtes. Bien que la syntaxe pour ces requĂȘtes ait Ă©tĂ© dĂ©finie dans SQL 2003, en rĂ©alitĂ© aucune base de donnĂ©es ne supporte cette syntaxe. Cependant, la plupart des bases de donnĂ©es fournissent une implĂ©mentation alternative en utilisant une syntaxe spĂ©cifique. Le constructeur de requĂȘtes de fusion dans Drupal abstrait le concept de fusion de requĂȘte dans une structure objet, de sorte que cet objet peut ĂȘtre compilĂ© diffĂ©remment pour chaque base de donnĂ©es en tenant compte de ses spĂ©cificitĂ©s.
Travail avec la base de donnĂ©es dans Drupal 7 - leçon 12 - Conditions des requĂȘtes (WHERE, HAVING, LIKE)
La condition dâune requĂȘte permet de sĂ©lectionner uniquement les enregistrements rĂ©pondant Ă certaines contraintes, par exemple les nĆuds créés depuis moins de deux semaines, les termes contenant le mot "drupal", etc. En SQL, on utilise WHERE et HAVING pour dĂ©finir des restrictions sur les requĂȘtes SELECT, UPDATE, DELETE. Dans les requĂȘtes dynamiques, un mĂ©canisme similaire existe pour gĂ©rer ces conditions, fonctionnant de la mĂȘme maniĂšre pour les trois types de requĂȘtes : sĂ©lection, mise Ă jour, suppression.