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);
}
}
1条答案
按热度按时间rdrgkggo1#
这并不能完全解决你的问题,但除非有合法的理由将数据保存在不同的数据库中,否则我真的会尽量不这样做。您可以使用全局作用域和租户ID来限制用户看到的内容。
在您的用户模型上,您可以添加
tenant_id
列,然后在所有模型上使用全局范围:这样,每当用户访问模型时,他们只会收到分配给他们的模型。维护单独的数据库(迁移、无法全局查询等)有很多令人头痛的问题,因此如果可以避免,就应该这样做。
下面是另一个关于动态更改连接的问题,如果必须的话,这可能会有所帮助:laravel动态更改连接