stancl/tenancy: 如何从全局租户数据库中获取数据?
stancl/tenancy: How to fetch data from tenant db globally?
我曾经从数据库中获取数据并通过 ServiceProvider 在所有视图中提供,但现在,我正在使用 stancl/tenancy 用于多租户系统。我需要将一些全局数据传递给所有视图文件,将获取数据写入 ServiceProvider returns 数据,仅来自中央数据库。那么,在请求任何其他请求之前,如何从租户数据库中获取数据到全局所有视图文件?
服务提供商运行在租户被识别之前,因此不能用于进行配置,例如向所有视图共享数据。
相反,您可以通过创建实现 Stancl\Tenancy\Contracts\TenancyBootstrapper
接口的 class 来制作自定义租赁引导程序。
namespace App;
use View;
use Stancl\Tenancy\Contracts\Tenant;
use Stancl\Tenancy\Contracts\TenancyBootstrapper;
class ViewBootstrapper implements TenancyBootstrapper
{
public function bootstrap(Tenant $tenant)
{
// Write your logic here.
View::share('variable', 'data');
}
public function revert()
{
// Optional, but recommended:
// Write you logic here that reverts the actions.
}
}
最后,将其添加到 config/tenancy.php
文件中的 bootstrappers
数组以启用引导程序。
我曾经从数据库中获取数据并通过 ServiceProvider 在所有视图中提供,但现在,我正在使用 stancl/tenancy 用于多租户系统。我需要将一些全局数据传递给所有视图文件,将获取数据写入 ServiceProvider returns 数据,仅来自中央数据库。那么,在请求任何其他请求之前,如何从租户数据库中获取数据到全局所有视图文件?
服务提供商运行在租户被识别之前,因此不能用于进行配置,例如向所有视图共享数据。
相反,您可以通过创建实现 Stancl\Tenancy\Contracts\TenancyBootstrapper
接口的 class 来制作自定义租赁引导程序。
namespace App;
use View;
use Stancl\Tenancy\Contracts\Tenant;
use Stancl\Tenancy\Contracts\TenancyBootstrapper;
class ViewBootstrapper implements TenancyBootstrapper
{
public function bootstrap(Tenant $tenant)
{
// Write your logic here.
View::share('variable', 'data');
}
public function revert()
{
// Optional, but recommended:
// Write you logic here that reverts the actions.
}
}
最后,将其添加到 config/tenancy.php
文件中的 bootstrappers
数组以启用引导程序。