De acordo com db_insert
a página do manual, essa função está obsoleta e é melhor usar a conexão com o banco de dados Drupal 8 para executar a inserção.
Descontinuada
a partir do Drupal 8.0.x, será removido no Drupal 9.0.0. Em vez disso, injete uma conexão com o banco de dados no seu serviço a partir do contêiner e chame insert () nele. Por exemplo, $ injected_database-> insert ($ table, $ options);
Agora, como posso obter uma conexão com o banco de dados e chamar o insert()
método?
\Drupal::database()->insert(...);
?class PetmdController extends ControllerBase
Respostas:
Para injetar o serviço de banco de dados, adicione / altere os seguintes métodos na sua classe de controlador:
fonte
Para adicionar à resposta do Berdir, aqui é como você pode injetar seu serviço de banco de dados no seu controlador
Você pode estudar
core/lib/Drupal/Core/Database/Query
para obter mais informaçõesfonte
Primeiro, como diz a sua citação, ele foi descontinuado para o Drupal 9 . O que significa que ele permanecerá por anos e nunca será removido do Drupal 8.
Mas sim, é uma boa ideia evitar funções obsoletas. Como qualquer outra função obsoleta, você sempre pode simplesmente olhar para sua implementação para ver como é a nova maneira de fazê-lo. Embora, em vez de chamar \ Drupal, você queira injetar o banco de dados ou qualquer outro serviço necessário, quando possível (quando você estiver em um serviço, controlador, formulário, plug-in, ...)
fonte
Opção 1:
opção 2
fonte