Таблица webform_submission_data

Таблица webform_submission_data является центральным хранилищем данных для модуля Webform в Drupal. Она содержит все значения полей для каждой отправленной формы, организованные в формате "ключ-значение". Эта структура позволяет гибко хранить данные различных типов полей без необходимости изменять схему базы данных при добавлении новых полей в формы.

Поля

Поле Тип данных Описание
sid int Идентификатор отправки (submission ID). Внешний ключ, связывающий данные с основной информацией об отправке в таблице webform_submission.
webform_id varchar(32) Идентификатор веб-формы. Внешний ключ для таблицы webform.
name varchar(128) Машинное имя поля веб-формы, для которого хранится значение.
property varchar(128) Свойство значения. Обычно пустая строка для простых значений или название свойства для составных значений.
delta int Индекс значения для полей с множественными значениями. Для полей с одним значением обычно равен 0.
value text Значение поля формы. Для большинства полей хранится строковое представление данных.

Как это работает

Когда пользователь отправляет веб-форму, создается запись в таблице webform_submission с основными метаданными (время создания, автор, форма и т.д.). Затем для каждого поля формы создается одна или несколько записей в таблице webform_submission_data.

Структура "ключ-значение" позволяет хранить данные различных типов полей (текстовые поля, выпадающие списки, радио-кнопки, файлы) в одной таблице без необходимости изменять схему базы данных при добавлении новых полей в формы.

Для полей с множественными значениями (например, когда можно добавить несколько элементов) создаются несколько записей с одинаковым name, но разными значениями delta (0, 1, 2 и т.д.).

Поле property используется для составных данных. Например, для поля "Адрес" могут создаваться отдельные записи для улицы, города, почтового индекса и т.д., где property указывает тип сохраняемого значения.

Пример SQL-запроса

Получить все данные для конкретной отправки формы можно следующим запросом:

sqlSELECT name, property, delta, value
FROM webform_submission_data
WHERE sid = 123
ORDER BY name, delta;

Найти все отправки формы с определенным значением в поле:

sqlSELECT sd.sid, sd.value
FROM webform_submission_data sd
WHERE sd.webform_id = 'contact'
AND sd.name = 'email'
AND sd.value LIKE '%@example.com';

Смотрите также

  • таблицу webform_submission,
    которая хранит метаинформацию об отправках форм
  • таблицу webform,
    которая содержит определение веб-форм
  • таблицу webform_element,
    которая хранит информацию об элементах форм
  • таблицу webform_log,
    которая содержит журнал событий веб-форм