Однако этот подход дает сбой при использовании драйверов кэша, таких как база данных, которые не поддерживают тегирование, выдавая:
Код: Выделить всё
BadMethodCallException: This cache store does not support tagging.
Код: Выделить всё
Call to a member function getTenantKey() on null
- Надежный способ переопределить или обернуть диспетчер кэша Laravel для добавления области действия на основе арендатора только тогда, когда клиент разрешен, и только когда магазин поддерживает тегирование.
- Запасное решение для магазинов, которые не поддерживают тегирование (например, добавление префикса ключа кэша) вручную).
Любые рекомендации или лучшие практики будут очень признательны.
Я создал собственный TenantCacheManager, который проверяет, поддерживает ли базовое хранилище теги (supportsTags()), и возвращается к ручному добавлению префикса ключа кэша, если это не так. Я ожидал, что это обеспечит беспрепятственное использование кэша для конкретного клиента без ошибок, независимо от драйвера хранилища.
Однако экземпляр пользовательского менеджера все равно был создан слишком рано, до того, как клиент был разрешен, что привело к тому, что tenant() вернул значение null и произошел сбой. Я также попытался условно переопределить привязку внутри поставщика услуг, но было слишком поздно или неэффективно.
Подробнее здесь: https://stackoverflow.com/questions/797 ... cache-in-s
Мобильная версия