Таблица node_field_data
Таблица node_field_data является одной из центральных таблиц в Drupal для хранения контента. Она содержит основные данные для всех типов материалов (нод) на сайте, такие как заголовок, дата публикации, статус публикации и информация об авторе. Данные в этой таблице зависят от языка, то есть для каждой ноды и каждого языка сайта может существовать отдельная запись с переведенными полями.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
nid |
int |
Первичный ключ, уникальный идентификатор ноды. Связывает данные с базовой записью в таблице node.
|
vid |
int |
Идентификатор ревизии (версии) ноды. Внешний ключ для таблицы node_revision. Для самых последних версий нод это значение совпадает с vid в таблице node.
|
type |
varchar(32) |
Машинное имя типа материала (ноды), к которому принадлежит запись (например, article, page). Внешний ключ для таблицы node_type.
|
langcode |
varchar(12) |
Код языка, для которого содержатся данные в этой записи (например, en, ru). Определяет, является ли запись переводом оригинальной ноды.
|
status |
tinyint |
Статус публикации ноды: 1 - опубликована, 0 - не опубликована.
|
uid |
int |
Идентификатор пользователя (автора), создавшего ноду. Внешний ключ для таблицы users_field_data.
|
title |
varchar(255) |
Заголовок ноды для указанного языка. |
created |
int |
Метка времени Unix, когда нода была создана. |
changed |
int |
Метка времени Unix последнего изменения ноды. |
promote |
tinyint |
Флаг, указывающий, promoted ли нода на главную страницу: 1 - да, 0 - нет.
|
sticky |
tinyint |
Флаг, указывающий, является ли нода "прикрепленной" (всегда отображается в начале списков): 1 - да, 0 - нет.
|
default_langcode |
tinyint |
Флаг, указывающий, является ли эта запись данными для языка по умолчанию: 1 - да, 0 - это перевод.
|
revision_translation_affected |
tinyint |
Флаг, используемый системой перевода ревизий для отслеживания того, была ли затронута данная ревизия/язык. |
Как это работает
При создании новой ноды в системе Drupal сначала создается базовая запись в таблице node, которая содержит мета-информацию, не зависящую от языка. Затем для языка по умолчанию создается запись в node_field_data, куда сохраняются основные поля, такие как заголовок.
Если на сайте включена и настроена система перевода контента (модуль Content Translation), для одного и того же nid в таблице node_field_data может существовать несколько записей с разными значениями langcode. Это позволяет хранить перевод заголовка и других базовых полей ноды на разные языки.
Поля status, promote и sticky являются ключевыми для построения различных списков материалов (например, лент новостей, блогов) и управления их отображением на сайте.
Большинство запросов для вывода списков нод (например, на главной странице, в блоге, в представлениях) обращаются именно к таблице node_field_data, так как она содержит все необходимые для фильтрации и сортировки данные.
Пример SQL-запроса
Выбрать заголовки и даты создания последних 10 опубликованных статей на русском языке:
SELECT nid, title, created
FROM node_field_data
WHERE type = 'article'
AND status = 1
AND langcode = 'ru'
ORDER BY created DESC
LIMIT 10;
Смотрите также
-
таблицу
node,
которая содержит базовую, не зависящую от языка мета-информацию о нодах -
таблицу
node_revision,
которая хранит данные ревизий нод -
таблицу
node_access,
которая управляет правами доступа к материалам -
таблицу
node_type,
которая хранит информацию о типах материалов