我正在尝试使用 Laravel 5 构建一个应用程序。它应该是一个多租户数据库架构,使用多个数据库。我的雇主出于安全考虑要求这样做。
我试图手动管理主 DB 迁移和租户迁移,但失败了。所以我决定寻求 Laravel 特定包的帮助,这似乎是我需要的。
Tenanti 提供了一种解决我的问题的方法,但问题是,作为一名新手开发人员,我无法完全理解如何在我的应用程序中使用它。
我相信我已经正确地安装了它:
composer require "orchestra/tenanti=~3.0"
在配置应用程序文件中添加这些提供程序和别名:
'providers' => [
// ...
Orchestra\Tenanti\TenantiServiceProvider::class,
Orchestra\Tenanti\CommandServiceProvider::class,
],
'aliases' => [
'Tenanti' => Orchestra\Support\Facades\Tenanti::class,
],
最终发布配置并根据多个数据库的文档进行调整:
php artisan vendor:publish
好的,请将需要翻译的内容发给我。return [
'drivers' => [
'user' => [
'model' => App\User::class,
'migration' => 'tenant_migrations',
'path' => database_path('tenanti/user'),
],
],
];
目前我还不确定接下来该做什么?
我的疑问如下:
- 迁移文件将在哪里生成和存储?我的应用程序中显然有两种类型的数据库。一组文件用于存储所有租户信息的主DB,另一组文件用于租户DB。那这些文件将如何存储和处理?
- 在文档中经常看到“driver”这个词,但我不确定它确切的含义是什么。
- 如何处理应用程序的身份验证?每当租户登录时,我都需要确保与数据库的连接动态更改。我该如何实现这个功能?
- 我尝试审查包的代码库以理解其中的代码,但徒劳无功。像门面、命令总线、服务提供者等设计模式方面我并不擅长,这就是为什么我无法理解包的流程或意义所在的原因。
我尝试运行包自带的一些artisan命令,例如:
php artisan tenanti:install {driver}
php artisan tenanti:make {driver} {name}
但是我遇到了以下错误:
[InvalidArgumentException] 数据库连接 [tenants] 不可用。
我在哪里可以找到资源来了解如何继续进行?