как перезагрузить пользовательские пользовательские поля без очистки кеша - PullRequest
0 голосов
/ 09 июля 2019

Я удаляю из базы данных, используя следующий код. и когда я иду на страницу пользователя, поле все еще заполнено. после очистки кэша изменения вступили в силу.

Я попробовал user_save () и user_load () сразу после выполнения запроса sql.

$num_deleted = db_delete('field_data_field_teams')
->condition('field_teams_tid', $mytid)
->condition('entity_id', $user_fields->uid)
->condition('entity_type', 'user')
->execute();
$account = user_load($uid);
user_save($account);

Я хочу, чтобы изменения были применены немедленно.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вам просто нужно сбросить данные кэша для этого конкретного объекта пользователя. Самый простой способ добиться этого - использовать метод 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() - которая очистит оба поля данных и кеш поля - вместо выполнения операции базы данных над полем, что приводит к неверным данным кеша.

0 голосов
/ 09 июля 2019

Вы должны использовать эту команду после метода save ():

drupal_flush_all_caches();

А вот ссылка на руководство: https://www.drupal.org/docs/7/administering-drupal-7-site/clearing-or-rebuilding-drupals-cache

...