Según db_insert
la página del manual, esta función está en desuso y es mejor usar la conexión de base de datos Drupal 8 para realizar la inserción.
Obsoleto
a partir de Drupal 8.0.x, se eliminará en Drupal 9.0.0. En su lugar, obtenga una conexión de base de datos inyectada en su servicio desde el contenedor y llame a insert () en él. Por ejemplo, $ injected_database-> insert ($ table, $ options);
Ahora, ¿cómo puedo obtener una conexión de base de datos y un insert()
método de llamada ?
\Drupal::database()->insert(...);
?class PetmdController extends ControllerBase
Respuestas:
Para inyectar el servicio de base de datos, agregue / modifique los siguientes métodos en su clase de controlador:
fuente
Para agregar a Berdir, la respuesta aquí es cómo puede inyectar su servicio de base de datos en su controlador
Puedes estudiar
core/lib/Drupal/Core/Database/Query
clases para más informaciónfuente
Primero, como dice su cita, está en desuso para Drupal 9 . Lo que significa que permanecerá durante años y no se eliminará de Drupal 8 nunca.
Pero sí, es una buena idea evitar funciones obsoletas. Al igual que cualquier otra función obsoleta, siempre puede simplemente mirar su implementación para ver cómo es la nueva forma de hacerlo. Aunque en lugar de llamar a \ Drupal, desea inyectar la base de datos o cualquier otro servicio que necesite cuando sea posible (cuando está en un servicio, controlador, formulario, complemento, ...)
fuente
Opción 1:
opcion 2
fuente