Według db_insert
strony podręcznika funkcja ta jest przestarzała i lepiej jest użyć połączenia z bazą danych Drupal 8 do wykonania wstawiania.
Przestarzałe
od Drupal 8.0.x zostanie usunięty w Drupal 9.0.0. Zamiast tego uzyskaj połączenie bazy danych wstrzyknięte do twojej usługi z kontenera i wywołaj na niej insert (). Na przykład $ injected_database-> insert ($ table, $ options);
Jak mogę uzyskać połączenie z bazą danych i insert()
metodę wywołania ?
\Drupal::database()->insert(...);
?class PetmdController extends ControllerBase
Odpowiedzi:
Aby wstrzyknąć usługę bazy danych, dodaj / zmień następujące metody w klasie kontrolera:
źródło
Aby dodać do Berdira odpowiedź tutaj brzmi: jak wstrzyknąć usługę bazy danych do kontrolera
Możesz studiować
core/lib/Drupal/Core/Database/Query
zajęcia, aby uzyskać więcej informacjiźródło
Po pierwsze, jak mówi cytat, jest on nieaktualny dla Drupala 9 . Co oznacza, że pozostanie przez lata i nie zostanie nigdy usunięty z Drupala 8.
Ale tak, dobrym pomysłem jest unikanie przestarzałych funkcji. Jak każda inna przestarzała funkcja, zawsze możesz po prostu spojrzeć na jej implementację, aby zobaczyć, jak wygląda nowy sposób jej działania. Chociaż zamiast dzwonić do \ Drupal, chcesz wstrzyknąć bazę danych lub inną usługę, której potrzebujesz, gdy jest to możliwe (gdy jesteś w usłudze, kontrolerze, formularzu, wtyczce, ...)
źródło
Opcja 1:
Opcja 2
źródło