如何在Laravel中使用多租户配置的验证?

时间:2018-05-15 17:05:59

标签: laravel validation multi-tenant

我已经制作了一个多租户的Laravel应用程序,它主要起作用。

我的最后一个配置问题是关于验证。

如果我按照in docs所示执行以下操作:

$validatedData = $request->validate([
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
]);

我会收到以下错误:

  

“SQLSTATE [42S02]:未找到基表或视图:1146表'master.posts'不存在

这是真的,因为'master'是指主数据库而不是租户。

如何在租户数据库上配置验证?

以下是我的MultiTenant中间件:

public function handle($request, Closure $next)
{
    $tenant_db = Auth::user()->tenant_db;
    Config::set('database.connections.tenant_mysql.database', $tenant_db);

    return $next($request);
}

1 个答案:

答案 0 :(得分:1)

unique规则允许指定在检查唯一性时使用的连接。

来自the docs

  

自定义数据库连接

     

有时,您可能需要为数据库设置自定义连接   验证者提出的查询。如上所示,将unique:users设置为   验证规则将使用默认数据库连接进行查询   数据库。要覆盖它,请指定连接和表   名字使用" dot"语法:

'email' => 'unique:connection.users,email_address'

因此,在您的情况下,您的验证规则将更改为:

'title' => 'required|unique:tenant_mysql.posts|max:255',