Таблица state
Таблица state в Drupal используется для хранения временных данных о состоянии системы, которые могут часто изменяться и не являются частью постоянной конфигурации сайта. В отличие от таблицы cache, данные в state не имеют срока годности и не очищаются автоматически.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
collection |
varchar(128) |
Имя коллекции, к которой принадлежит ключ. Обычно используется для группировки связанных состояний. Не может быть пустым. |
name |
varchar(128) |
Первичный ключ, уникальное имя состояния в пределах своей коллекции. Вместе с collection образует составной первичный ключ.
|
value |
blob |
Сериализованное значение состояния. Может хранить различные типы данных: числа, строки, массивы, объекты. |
Как это работает
Drupal предоставляет API для работы с состояниями через службу state. Для получения значения используется \Drupal::state()->get('key'), а для установки - \Drupal::state()->set('key', $value).
Данные в таблице state сериализуются перед сохранением и автоматически десериализуются при извлечении. Это позволяет хранить сложные структуры данных.
Основное отличие от таблицы cache заключается в том, что данные в state не имеют срока годности и не удаляются при очистке кеша. Они сохраняются до тех пор, пока не будут явно удалены или изменены.
Состояния следует использовать для данных, которые могут изменяться во время работы системы, но не являются конфигурацией, которая должна экспортироваться или импортироваться (для этого используется Configuration API).
Пример SQL-запроса
Получить все состояния из коллекции system можно следующим запросом:
SELECT collection, name, value
FROM state
WHERE collection = 'system';