Как создать запрос в Drupal 8

Я использую db_select в drupal 7, но теперь он устарел в drupal 8

Итак, если мне нужно создать запрос, чтобы перечислить всех пользователей из таблицы users_field_data , что мне делать?

Я все еще использую db_select или db_query хотя они являются устаревшими функциями? Или создать новый контроллер для расширения от « Select class » и сделать мой запрос?

    Зависит от того, чего вы пытаетесь достичь.


    Использование объекта хранения

    Если вы хотите сделать простой запрос о пользователях, то вы должны использовать loadByProperties объекта хранения

     $users = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties([ 'name' => 'bar' ]); 

    Использование запроса объекта и загрузкиMultiple

    Если вам нужен более сложный запрос с группами сортировки, диапазона, пейджера и OR / AND, вы должны использовать запрос объекта

     $ids = \Drupal::entityQuery('user')->condition('name', 'foo')->execute(); $users = User::loadMultiple($ids); 

    Как упоминалось в документации, вы можете запрашивать данные, введя класс подключения базы данных Drupal. Например:

     use Drupal\Core\Database\Connection; class DatabaseQueryExample { protected $connection; public function __construct(Connection $connection) { $this->connection = $connection; } public function queryExamples() { // db_query() $this->connection->query(" ... "); // db_select() $this->connection->select(" ... "); } } 

    db_select, db_insert, db_update и т. д. были лишены Drupal 8.0.x, будут удалены в Drupal 9.0.0. Вместо этого вы получите подключение к базе данных, введенное в вашу службу из контейнера, и вызовите select (). Например, $ injected_database-> select ($ table, $ alias, $ options);

    например:

     $db = \Drupal::database(); $data = $db->select('table_name','t')->fields('t')->execute(); $db->insert(); $db->update();