Tenanti“未定义的变量:数据库”

时间:2015-12-29 01:11:25

标签: database-connection laravel-5.1 multi-tenant

我正在开发一个多租户用途的应用程序,为此,我使用了Orchestral / Tenanti,但我遇到了以下问题。

我已经执行了多数据库连接设置所需的一些步骤。

  1. 多个数据库的配置租户驱动程序:在我的tenanti.php
  2. 设置默认数据库连接:在我的Tenant.php中间件
  3. 我的租户连接的定义:在我的config / database.php
  4. 问题出现在数据库连接解析器步骤中。在我的中间件中,我正在定义要使用的连接(我不发布代码因为与Tenanti使用无关),这是正确设置的。

    我的解析器代码是:

    public function boot()
        {
            Tenanti::connection('tenants', function (User $entity, array $template) {
                $template['database'] = "db_{$entity->getKey()}";
                return $template;
            });
        }
    

    此代码位于我的AppServiceProvider上。但我使用的数据库没有从我的解析器中正确设置,抛出以下错误:

    ErrorException in MySqlConnector.php line 110:
    Undefined variable: database
    

    显然,错误意味着没有设置数据库。 有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

经过多次测试后,我没有使用Tenanti找到解决方案,而是使用Config类设置要使用的数据库,并在database.php上维护我的租户配置。

Config::set('database.connections.tenants.database', 'legal_'.$request->route()->parameter('account'));
Config::set('database.default', 'tenants');