【发布时间】:2020-11-18 13:58:59
【问题描述】:
我正在尝试使用 Laravel 5 构建和应用程序。它应该是使用多个数据库的多租户数据库架构。出于安全考虑,我的雇主要求这样做。
我曾尝试手动管理主数据库迁移和租户迁移,但失败了。因此,我决定借助 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'),
],
],
];
此时我仍然很模糊下一步该做什么?
我的疑惑如下:
- 迁移文件将在哪里生成和存储?我的意思是我的应用程序中有两种数据库。一组文件用于存储所有租户信息的主数据库,其他文件将用于租户数据库。那么这些将如何存储以及存储在何处?
- 我在文档中经常看到“驱动程序”这个词,但我不确定驱动程序到底是什么。
- 我将如何处理应用程序的身份验证?我的意思是每当租户登录时,我都必须确保与数据库的连接动态更改。我将如何做到这一点?
- 我试图通过包本身的存储库并理解其中的代码但徒劳无功。我对门面、命令总线、服务提供者等设计模式不是很好,这就是为什么我无法理解包的流程或理解它的原因。
我尝试运行一些随包附带的工匠命令,例如:
php artisan tenanti:install {driver}
php artisan tenanti:make {driver} {name}
但我收到如下错误:
[InvalidArgumentException] 数据库连接 [租户] 不可用。
我在哪里可以找到资源来了解如何进行此操作?
【问题讨论】:
-
好问题!我也有同样的问题。
-
您是否尝试过联系crynobone?我为他的其他管弦乐项目之一做出了贡献,发现他非常乐于助人且反应迅速。
-
我个人有,他很有帮助并且确实回复了,但问题是我是一个新手开发人员,只能理解他告诉我的一些事情。大部分都直奔我的头顶。到那时,我也开始朝着另一个方向发展,核心问题是多数据库方法中的多租户。
标签: php mysql laravel laravel-5 multi-tenant