Таблица webform_submission
Таблица webform_submission является центральной таблицей модуля Webform в Drupal. Она хранит метаданные каждой отправки формы, такую как идентификатор, связанную форму, пользователя, язык, IP-адрес и временные метки. Сами данные полей формы хранятся в связанных таблицах, таких как webform_submission_data.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
sid |
serial |
Уникальный идентификатор отправки (Submission ID). Первичный ключ таблицы. |
webform_id |
varchar(32) |
Идентификатор веб-формы, к которой относится эта отправка. Ссылается на конфигурационный объект формы. |
entity_type |
varchar(32) |
Тип сущности, к которой привязана форма (например, node, user). Может быть NULL, если форма не привязана к конкретной сущности.
|
entity_id |
int |
Идентификатор сущности, к которой привязана форма. Работает в паре с entity_type. Может быть NULL.
|
langcode |
varchar(12) |
Язык, на котором была отправлена форма. |
current_page |
varchar(128) |
Текущая страница многостраничной формы. Используется для сохранения прогресса и возврата к незавершенной отправке. |
remote_addr |
varchar(128) |
IP-адрес пользователя, отправившего форму. |
uid |
int |
Идентификатор пользователя (User ID), отправившего форму. Если форма отправлена анонимным пользователем, значение равно 0. Внешний ключ для таблицы users.
|
completed |
int |
Временная метка Unix времени завершения отправки формы. Значение 0 означает, что отправка является черновиком и не завершена.
|
changed |
int |
Временная метка Unix времени последнего изменения отправки. |
in_draft |
tinyint |
Флаг, указывающий, является ли отправка черновиком (1) или завершенной отправкой (0).
|
locked |
tinyint |
Флаг, указывающий, заблокирована ли отправка (1) для изменения. Используется для отметки отправок, которые обрабатываются или архивируются.
|
sticky |
tinyint |
Флаг, указывающий, является ли отправка "прикрепленной" (1). Прикрепленные отправки могут быть выделены в интерфейсе администратора.
|
notes |
longtext |
Заметки администратора, связанные с данной отправкой. |
token |
varchar(255) |
Уникальный токен, который может использоваться для предоставления доступа к отправке без аутентификации (например, в ссылках для подтверждения). |
uri |
varchar(2000) |
URI страницы, с которой была отправлена форма. |
Как это работает
Когда пользователь отправляет веб-форму на сайте Drupal, создается запись в таблице webform_submission. Эта запись содержит всю служебную информацию о факте отправки, но не сами данные полей.
Поля entity_type и entity_id позволяют привязать отправку формы к конкретной сущности Drupal. Например, если форма прикреплена к определённому материалу (ноде), эти поля будут содержать node и ID этого материала соответственно.
Флаг in_draft позволяет модулю Webform поддерживать функциональность черновиков. Пользователь может начать заполнять форму, сохранить её как черновик и вернуться к завершению позже.
Фактические данные, введенные пользователем в поля формы, хранятся в отдельной таблице webform_submission_data, где каждая строка представляет собой значение одного поля для одной отправки. Связь между таблицами осуществляется через поле sid.
Временные метки completed и changed позволяют отслеживать историю отправки и используются для фильтрации и сортировки результатов в интерфейсе администратора.
Пример SQL-запроса
Получить 10 последних завершенных отправок для конкретной формы можно следующим запросом:
SELECT s.sid, s.uid, u.name as username, s.completed, s.changed
FROM webform_submission s
LEFT JOIN users u ON s.uid = u.uid
WHERE s.webform_id = 'contact'
AND s.in_draft = 0
ORDER BY s.completed DESC
LIMIT 10;
Смотрите также
-
таблицу
webform_submission_data,
которая хранит данные полей отправленных форм -
таблицу
webform,
которая хранит конфигурацию веб-форм -
таблицу
users,
которая хранит данные пользователей сайта -
таблицу
node,
которая хранит материалы сайта