Pregunta:
De acuerdo con la página del manual db_insert
, esta función está obsoleta y es mejor usar la conexión a la 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, $ base_datos_inyectada-> insertar ($ tabla, $ opciones);
Ahora, ¿cómo puedo obtener una conexión a la base de datos y llamar al método insert()
?
Respuesta:
Para inyectar el servicio de base de datos, agregue / modifique los siguientes métodos en su clase de controlador:
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Database\Connection;
use Symfony\Component\DependencyInjection\ContainerInterface;
class PetmdController extends ControllerBase {
protected $database;
public function __construct(Connection $database) {
$this->database = $database;
}
public static function create(ContainerInterface $container) {
return new static(
$container->get('database')
);
}
public function foo() {
$this->database->insert(...)->fields(...)->execute();
}
}