Вам просто нужно сбросить данные кэша для этого конкретного объекта пользователя. Самый простой способ добиться этого - использовать метод DrupalEntityControllerInterface ::resetCache()
:
entity_get_controller('user')->resetCache(array($uid));
В зависимости от того, как управляется ваше поле, и если оно «подключено» или нет, вам также может потребоваться очистить данные кеша поля:
cache_clear_all('field:user:' . $uid, 'cache_field', TRUE);
Другие функции слишком тяжелы для этих задач и, безусловно, не , что вы хотите:
cache_clear_all()
истекает срок действия данных из всех (или подмножеств) cache_*
таблиц.
drupal_flush_all_caches()
выполняет те же функции, что и выше, но, кроме того, он перестраивает кэш меню и реестры тем, массивы информации о сущностях и типах узлов, а также очищает кеши css и js и, наконец, вызывает хуки так, данные кеша других модулей также могут быть очищены.
Примечание : Если ваша цель состояла в том, чтобы просто очистить данные кэша поля после удаления данных поля, рассмотрите возможность использования функции field_purge_data()
- которая очистит оба поля данных и кеш поля - вместо выполнения операции базы данных над полем, что приводит к неверным данным кеша.