Таблица node
Таблица node является ядром системы управления контентом Drupal. Каждая запись в этой таблице представляет собой отдельный материал (ноду) на сайте, будь то статья, страница, новость или материал пользовательского типа. Она содержит базовые метаданные, в то время как основное содержимое (поля) хранится в других связанных таблицах.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
nid |
int |
Первичный ключ, уникальный идентификатор ноды. Автоинкрементное число. |
vid |
int |
Идентификатор версии (revision ID). Ссылается на таблицу node_revision. Для самой актуальной версии ноды это значение совпадает с nid. Позволяет системе отслеживать историю изменений.
|
type |
varchar(32) |
Машинное имя типа материала (ноды), к которому принадлежит данная запись (например, article, page). Связь определяется в таблице node_type.
|
uuid |
varchar(128) |
Уникальный универсальный идентификатор (Universally Unique Identifier) для ноды. Используется для однозначной идентификации контента при миграциях и синхронизации между несколькими сайтами. |
langcode |
varchar(12) |
Код языка, на котором представлена данная нода (например, en, ru). Поле критически важно для многоязычных сайтов.
|
Как это работает
Когда пользователь создает новый материал на сайте Drupal, система в первую очередь создает запись в таблице node. Этой записи присваивается уникальный nid. Поле type определяет, к какому типу контента относится нода, что диктует, какие поля будут ей доступны (эти поля хранятся в отдельных таблицах, таких как node__body, node__field_*).
Система версий (revisions) является ключевой особенностью Drupal. При каждом изменении ноды может создаваться новая версия. Поле vid связывает базовую запись о ноде из таблицы node с конкретной версией её данных, которые хранятся в node_revision. Это позволяет откатываться к предыдущим версиям контента.
Поле uuid обеспечивает уникальность ноды в распределенных системах. Даже если две ноды на разных сайтах будут иметь одинаковый nid, их uuid гарантированно будут различаться, что исключает конфликты при переносе контента.
Пример SQL-запроса
Выбрать 10 последних опубликованных статей с их заголовками можно следующим запросом:
SELECT n.nid, n.title, n.created, u.name as author_name
FROM node n
INNER JOIN users_field_data u ON n.uid = u.uid
WHERE n.type = 'article'
AND n.status = 1
ORDER BY n.created DESC
LIMIT 10;
Смотрите также
-
таблицу
node_field_data,
которая хранит переводимые данные ноды, включая заголовок -
таблицу
node_revision,
которая хранит данные различных версий материалов -
таблицу
node_access,
которая управляет правами доступа к материалам -
таблицу
node_type,
которая хранит информацию о типах материалов