- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
目前我有一个托管多个租户的应用程序,这些租户是用 CodeIgniter 编写的。但我真的很喜欢 Laravel 4,我想开始将应用程序迁移到 Laravel。
这是当前的设置:
在 Codeigniter 中,启动和结束新的数据库连接相对容易。
对于 Laravel,我有以下问题/疑问。
这些是我的主要问题,我还有一些其他小问题,但可以解决。
希望有人能解释一下..
最佳答案
我只是尝试一下,所以请注意 :)每当您调用 DB 时都会使用的 DatabaseManager 类具有和扩展方法。这是 link to the source . DB::connection() 方法应该返回一个 Illuminate\Database\Connection 的实例。 .根据所有这些,我将创建一个新的用户连接,如下所示:
$user = Auth::user();
DB::extend($user->username, function() use ($user) {
// $pdo = new PDO(); set this up how you see fit
return new Illuminate\Database\Connection($pdo, $user->databaseName, $tablePrefix);
});
就个人而言,我会为每个用户添加一个新方法 User::databaseConnection(),并在我扩展 DatabaseManager 时调用它。
DB::extend($user->username, function() use ($user) {
return $user->databaseConnection();
});
在整个应用程序中,您应该能够通过以下方式调用注册用户的连接:
DB::connection(Auth::user()->username);
更新
根据调用租户连接的频率和时间,您可能需要使用 IOC 容器。
App::bind('tenantDB', function()
{
return DB::connection(Auth::user()->username);
});
App::make('tenantDB')->insert(...);
我忘记了迁移和播种。对于迁移,您可以设置文件路径
php artisan migrate:make foo --path=app/migrations
因此,如果您使用 Config 类来设置默认数据库或 DB::setDefaultConnection($username),我假设所有迁移和播种都将为当前连接完成。当该过程完成后,您可以切换回主数据库。
更新 2
laravel 开发人员非常棒,我绝对应该早点检查它。您可以在您创建的任何数据库连接上进行迁移和播种。
artisan migrate --database='userConnectionName'
artisan db:seed --database='userConnectionName'
看看 Barry 的回答,这可能比扩展 DatabaseManager 简单得多。
如果您想查看这些命令的所有选项,只需运行:
artisan help migrate
artisan help db:seed
关于php - Laravel 4 : Multiple Tenant Application, 每个租户都有自己的数据库和一个全局数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524181/
2 个不同的租户(租户 A 中的订阅 A 和租户 B 中的订阅 B) 我们在 Azure 云中有一个订阅,并且我们已经设置了 Azure Keyvault。我们可以在那里创建 key 并使用其中一个
如何在代码中配置 Windows Azure Active Directory 租户? 我希望能够允许用户访问我的 Multi-Tenancy SaaS 应用程序、注册我的服务并为其配置 Azure
我阅读了有关 headless 应用程序如何通过 Azure 进行身份验证的各种文章。我对术语有点困惑。在此sample code ,它说它需要一个 Azure AD 租户帐户。 我的理解是Azure
背景:我正在使用 Django 开发我的第一个 Multi-Tenancy 应用程序。我已经成功按照 https://github.com/tomturner/django-tenants 给出的教程
我正在尝试让 Microsoft 验证我的应用。第一步是成为微软合作伙伴,但我不知道如何登录? 当我尝试创建 Azure AD 租户时,我被告知我没有权限(即使我拥有该帐户)。 我无法使用用于登录 A
我开始学习 Microsoft Azure,但我陷入困境谁能详细告诉我 Microsoft 帐户、租户和订阅之间有什么区别? 最佳答案 当您说“Microsoft 帐户”时,这通常指个人 Micros
摘要:如何动态获取Microsoft用户的Tenant ID? 详细信息:我正在编写一个 Multi-Tenancy 应用程序(C# 和 .NET Core),我想使用它来创建订阅和 register
我正在尝试在澳大利亚区域创建 Azure B2C 租户,但在区域下拉列表中找不到澳大利亚。文档显示 Azure B2C 租户在所有位置都可用。我错过了什么吗? 最佳答案 基于Data residenc
我正在尝试在澳大利亚区域创建 Azure B2C 租户,但在区域下拉列表中找不到澳大利亚。文档显示 Azure B2C 租户在所有位置都可用。我错过了什么吗? 最佳答案 基于Data residenc
我正在尝试 ad-b2c,天哪,即使第一步结果也非常令人沮丧。无论如何,这是我的问题: 我的现有订阅有一个默认目录,该目录有自己的 mydefaultdirectory.onmicrosoft.com
我正在开发一个 ASP.NET MVC 应用程序,它必须访问 Office365 API。我使用了描述here为了获得仅应用程序的访问 token 。 现在,运行应用程序后,我进入 AAD 同意流程以
假设我购买了位于 Azure AD 租户 1(与资源林同义)中的 Multi-Tenancy 应用程序(HR 软件)。 我还购买了 Azure 租户 2 中另一家公司拥有的健康应用程序。 我不拥有租户
这是我的场景:新用户使用 Azure B2C 工作流程注册我们的 Web 应用程序。用户可以使用不同的身份提供商(Google、Microsoft、Amazon)进行注册。用户需要访问数据库。我想将他
我正在尝试删除我的 Azure AD 租户,但它显示: Directory has one or more applications. 我按照此处的步骤操作 https://support.micro
我有两个 B2C 租户。一种用于生产环境,另一种用于临时环境。我想将所有用户从生产租户迁移到暂存租户。我想定期这样做,用真实数据对临时环境进行测试。我知道我可以读取一个租户的所有用户并将其写入另一个租
Microsoft 的 UI 显示所有初始检查均已通过,他们可以删除此 Azure Active Directory 租户。随后出现消息称 Microsoft 实际上无法删除租户。我还能做些什么来真正
我正在尝试删除我的 Azure AD 租户,但它显示: Directory has one or more applications. 我按照此处的步骤操作 https://support.micro
我有两个 B2C 租户。一种用于生产环境,另一种用于临时环境。我想将所有用户从生产租户迁移到暂存租户。我想定期这样做,用真实数据对临时环境进行测试。我知道我可以读取一个租户的所有用户并将其写入另一个租
Microsoft 的 UI 显示所有初始检查均已通过,他们可以删除此 Azure Active Directory 租户。随后出现消息称 Microsoft 实际上无法删除租户。我还能做些什么来真正
有没有办法阻止用户登录到他们自己的 AAD 租户?例如,允许登录 contoso.onmicrosoft.com 但不允许登录 fabrikam.onmicrosoft.com。 我的客户有一个高度受
我是一名优秀的程序员,十分优秀!