У меня есть пользовательский объект, к которому я добавил некоторые вычисляемые поля, поэтому задействованы следующие классы:
класс MyEntity расширяет ContentEntityBase
класс ComputedFieldA расширяет FieldItemList
класс ComputedFieldB расширяет FieldItemList
Моя проблема в том, что я хочу, чтобы вычисляемые поля либо вообще не кэшировались, либо кэшировались, но с другой стратегией аннулирования.
Возможно ли то, что я хочу? Или мне просто нужно аннулировать кеш для всего объекта?
Изменить: само настраиваемое поле в основном представляет собой количество строк в другой таблице базы данных.Я хочу, чтобы этот счетчик кэшировался отдельно, а затем аннулировался, если вставляются новые строки.
Вывод потребляется через конечную точку jsonapi по умолчанию для объекта.
Редактировать 2: я думаю, это сложнее, чем я думал, поэтому я опишу сущности более подробно:
Объект А:
- Имеет отношения 1:1 с узлами на основе UUID
- Имеет количество сущностей Entity B, связанных с узлом (вычислено)
- Имеет расчет, основанный на этом счете (вычисляется)
Объект Б:
- Имеет связь N:1 с узлами на основе NID
Итак, если для узла X создается новый объект B, я хочу, чтобы кеш был признан недействительным в двух вычисляемых полях объекта A для узла XXXX-XXXX-XXXX-XXXX, чтобы конечная точка jsonapi отображала актуальные вычисленные данные.
Если я смогу добавить тег кеша node:X к каждому экземпляру вычисляемого поля, я ожидаю, что достигну того, чего хочу.