1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-06-20 22:54:05 +00:00

Improve comments

This commit is contained in:
lukinovec 2026-06-05 07:18:42 +02:00
parent 20036ef1ff
commit 566f50440a
2 changed files with 19 additions and 13 deletions

View file

@ -25,7 +25,10 @@ use Stancl\Tenancy\TenancyServiceProvider;
* *
* Notably, this bootstrapper sets TenancyServiceProvider::$adjustCacheManagerUsing to a callback * Notably, this bootstrapper sets TenancyServiceProvider::$adjustCacheManagerUsing to a callback
* that ensures all affected stores still use the central connection when accessed via global cache * that ensures all affected stores still use the central connection when accessed via global cache
* (typicaly the GlobalCache facade or global_cache() helper). * (typically the GlobalCache facade or global_cache() helper), even though this bootstrapper explicitly
* sets the connection to tenant for all scoped cache stores. TenancyServiceProvider::makeDatabaseCacheStoresCentral()
* cannot fix globalCache on its own because it reads 'tenant' from config (set by this bootstrapper), not null,
* so the callback is still needed to correct the connection to central for globalCache.
*/ */
class DatabaseCacheBootstrapper implements TenancyBootstrapper class DatabaseCacheBootstrapper implements TenancyBootstrapper
{ {

View file

@ -88,23 +88,26 @@ class TenancyServiceProvider extends ServiceProvider
// This works great for cache stores that are *directly* scoped, like Redis or // This works great for cache stores that are *directly* scoped, like Redis or
// any other tagged or prefixed stores, but it doesn't work for the database driver. // any other tagged or prefixed stores, but it doesn't work for the database driver.
// //
// When we use the DatabaseTenancyBootstrapper, it changes the default connection, // When DatabaseTenancyBootstrapper is used, it changes the default DB connection
// and therefore the connection of the database store that will be created when // to 'tenant'. A freshly created CacheManager would therefore instantiate database
// this new CacheManager is instantiated again. // stores with the tenant connection.
// //
// For that reason, we also adjust the relevant stores on this new CacheManager // For that reason, we adjust the relevant stores on this new CacheManager
// using the callback below. It is set by DatabaseCacheBootstrapper. // using the makeDatabaseCacheStoresCentral() method and the $adjustCacheManagerUsing callback below
// (set by DatabaseCacheBootstrapper).
$manager = new CacheManager($app); $manager = new CacheManager($app);
// Make globalCache use either the configured non-null connection, // When DatabaseTenancyBootstrapper is used, database stores whose 'connection'
// or fall back to the central connection. // config is null fall back to the default DB connection ('tenant'). Reset each
// such store to its explicitly configured connection, or fall back to central.
$this->makeDatabaseCacheStoresCentral($manager); $this->makeDatabaseCacheStoresCentral($manager);
// If a bootstrapper (like DatabaseCacheBootstrapper) makes the // DatabaseCacheBootstrapper explicitly writes 'tenant' into each store's 'connection'
// cache connection tenant explicitly, the makeDatabaseCacheStoresCentral() // config. makeDatabaseCacheStoresCentral() above would then read 'tenant' as the
// call ends up setting the tenant connection rather than the central one, // configured value (not null) and use it directly, so the central connection fallback
// and the $adjustCacheManagerUsing callback is needed to // wouldn't be used.
// make globalCache use the central connection. //
// This callback is used to correct those connections back to central for globalCache.
if (static::$adjustCacheManagerUsing !== null) { if (static::$adjustCacheManagerUsing !== null) {
(static::$adjustCacheManagerUsing)($manager); (static::$adjustCacheManagerUsing)($manager);
} }