Согласно db_insert
странице руководства, эта функция устарела, и для вставки лучше использовать соединение с базой данных Drupal 8.
Устаревшее
начиная с Drupal 8.0.x, будет удален в Drupal 9.0.0. Вместо этого получите соединение с базой данных, внедренное в ваш сервис из контейнера, и вызовите insert () для него. Например, $ injected_database-> insert ($ table, $ options);
Теперь, как я могу получить соединение с базой данных и вызвать insert()
метод?
\Drupal::database()->insert(...);
?class PetmdController extends ControllerBase
Ответы:
Чтобы внедрить службу базы данных, добавьте / измените следующие методы в вашем классе контроллера:
источник
Чтобы добавить к Berdir ответ здесь, как вы можете внедрить службу базы данных в свой контроллер
Вы можете изучать
core/lib/Drupal/Core/Database/Query
классы для получения дополнительной информацииисточник
Во-первых, как говорится в вашей цитате, она устарела для Drupal 9 . Это означает, что он останется в течение многих лет и никогда не будет удален из Drupal 8.
Но да, это хорошая идея, чтобы избежать устаревших функций. Как и любая другая устаревшая функция, вы всегда можете просто посмотреть на ее реализацию, чтобы увидеть, как это выглядит по-новому. Хотя вместо вызова \ Drupal вы хотите внедрить базу данных или любой другой сервис, который вам нужен, когда это возможно (когда вы находитесь в сервисе, контроллере, форме, плагине, ...)
источник
Опция 1:
Вариант 2
источник