Selon db_insert
la page de manuel, cette fonction est obsolète et il est préférable d'utiliser la connexion à la base de données Drupal 8 pour effectuer l'insertion.
Obsolète
à partir de Drupal 8.0.x, sera supprimé dans Drupal 9.0.0. Au lieu de cela, obtenez une connexion à la base de données injectée dans votre service à partir du conteneur et appelez insert () dessus. Par exemple, $ injected_database-> insert ($ table, $ options);
Maintenant, comment puis-je obtenir une connexion à une base de données et une insert()
méthode d' appel ?
\Drupal::database()->insert(...);
?class PetmdController extends ControllerBase
Réponses:
Pour injecter le service de base de données, ajoutez / modifiez les méthodes suivantes dans votre classe de contrôleur:
la source
Pour ajouter à la réponse de Berdir, voici comment vous pouvez injecter votre service de base de données dans votre contrôleur
Vous pouvez étudier les
core/lib/Drupal/Core/Database/Query
cours pour plus d'informationsla source
Tout d'abord, comme votre citation l'indique, il est obsolète pour Drupal 9 . Ce qui signifie qu'il restera en place pendant des années et ne sera jamais supprimé de Drupal 8.
Mais oui, c'est une bonne idée pour éviter les fonctions obsolètes. Comme toute autre fonction obsolète, vous pouvez toujours simplement regarder son implémentation pour voir comment la nouvelle façon de le faire est. Bien qu'au lieu d'appeler à \ Drupal, vous souhaitez injecter la base de données ou tout autre service dont vous avez besoin lorsque cela est possible (lorsque vous êtes dans un service, contrôleur, formulaire, plugin, ...)
la source
Option 1:
Option 2
la source