gpt4 book ai didi

mysql - 具有动态连接的联合表

转载 作者:行者123 更新时间:2023-11-29 16:31:19 25 4
gpt4 key购买 nike

我有类似 B2B 的应用程序,面临的挑战是我的每个客户都需要将他们的数据存储在不同的 RDS 中。我计划使用 MySQL 联合引擎来实现此目的,但是在创建本地表时,我们需要指定连接字符串,但这是否可以根据登录的用户更改这些连接字符串?我的意思是将每个用户的连接数据存储在本地数据库中,然后我们访问这些用户数据需要将该连接字符串添加到联合表中,这可能吗?我正在使用 Laravel 和 MySQL 开发我的应用程序。

最佳答案

这并不能完全解决您的问题,但除非有合法理由将数据保存在单独的数据库中,否则我真的会尽量不这样做。您可以使用全局范围和tenant_ids来限制用户看到的内容。

在您的用户模型上,您将添加一个 tenant_id 列,然后在您的所有模型上使用全局范围:

class TenantScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
$builder->where('tenant_id', \Auth::user()->tenant_id);
}
}

class Widget extends Model {

protected static function boot()
{
parent::boot();

static::addGlobalScope(new TenantScope);
}
}

这样,每当用户访问模型时,他们只会收到分配给他们的模型。维护单独的数据库有很多令人头疼的问题(迁移、无法全局查询等),所以如果你能避免它,你应该避免它。

这是关于动态更改连接的另一个问题,如果您必须的话,这可能会有所帮助:Laravel Change Connection Dynamically

关于mysql - 具有动态连接的联合表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com