Узел Drupal 7 -> Отображение полей в базе данных - PullRequest
9 голосов
/ 15 октября 2011

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

1 Ответ

9 голосов
/ 15 октября 2011

В Drupal 7 у вас есть сущности и поля;поля привязаны к сущностям.Узел - это реализация сущности (модуль узла реализует hook_entity_info() и другие подобные хуки), поэтому он может иметь поля.

Все реляционные данные поля / сущности хранятся в таблицах field_data_field_x и * 1005.* или аналогичный (последний потенциально хранит ревизии данных поля, если ревизии узла включены).

Столбец entity_id в этих таблицах является идентификатором узла, а bundle - типом содержимого узла.revision_id является идентификатором ревизии узла, опять же, действительно, полезно, только если ревизии узла включены.

ОБНОВЛЕНИЕ

В терминологии Drupal тип контента является bundle и bundle s привязаны к сущностям (в данном случае node сущность).Когда вы создаете новый тип контента, он сохраняется в таблице node_type, а когда очищаются кеши (что вызывает hook_entity_info для всех модулей), функция node_entity_info() создает список пакетов.из типов содержимого (посмотрите на бит в той функции, которая начинается foreach (node_type_get_names() as $type => $name) {, node_type_get_names получает список всех типов содержимого).

Как обсуждалось выше, поля могут быть присоединены к объектам, поэтому поляможет быть присоединен к узлам с дельтой (если хотите) bundle.

...