Entity Key-Value Store

Categories

Component ID

2870381

Component name

Entity Key-Value Store

Component type

module

Maintenance status

Development status

Component security advisory coverage

not-covered

Downloads

68

Component created

Component changed

Component body

This module provides possibility to save/load additional data for entities in (Drupal-based) key-value storage like SQL, Redis, MongoDB, etc. It can be useful for some highloaded properties like counters.

Features:

  • Multiple/single key-value operations
  • Possibility to use different backends for different entity key-value stores
  • Default values (including default-value callbacks)
  • Type hinting/manipulations
  • Live-load (preloading key-values on entity load) (optional)
  • Live-delete (deletion key-values on entity delete) (optional, enabled by default)
  • Drush commands

Usage examples

1. Defining some special counter for node by special hook:

function mymodule_entity_keyvalue_info() {
  return [
    'node' => [
      'keys' => [
        'special_counter' => [
          'default_value' => 0,
          // Possible values: 'any', 'int', 'float', 'string', 'array', 'object'.
          'type' => 'int',
        ],
        'key2' => [
          // Default value can be callable.
          'default_value' => function (NodeInterface $node) {
            return $node->getTitle();
          },
          'type' => 'string',
        ],
      ],
    ],
  ];
}

2. Updating value:

$node = Node::load(156);
$store = Drupal::service('entity_keyvalue_store_provider')->getEntityStore('node');

// Actually, you can avoid this by setting 'autoload' => TRUE in hook_entity_keyvalue_info.
$values = $store->getValues($node);
$values['special_counter']++;

$store->setValues($node, $values);


DrupalJedi Logo