Laravel Tenanti: драйвер по умолчанию не реализован - PullRequest
0 голосов
/ 09 июня 2018

Я хочу внедрить Orchestral / Tenanti для создания баз данных для каждой компании, зарегистрированной в моем приложении.

Когда я добавил Resolver Connection Database, как упомянуто в https://github.com/orchestral/tenanti, я получаю следующую ошибку

InvalidArgumentException Соединение с базой данных [tenants] недоступно.

После поиска в Google я нашел ответ cynobone в stackoverflow https://stackoverflow.com/a/33320724/9604136, где вместо соединения используется setupMultiDatabase, что дало мне еще одну ошибку

InvalidArgumentException Драйвер по умолчанию не реализован.

Для моего приложения, когда я создавал новую базу данных для каждой компании, я соответственно изменил

tenanti.php

'drivers' => [
    'company' => [
        'model'  => App\Company::class,
        'path'   => database_path('tenanti/company'),
        'shared' => false,
    ],
],

AppServiceProvider.php

public function boot()
{

    Tenanti::setupMultiDatabase('tenants', function (Company $entity, array $config) {
        $config['database'] = "comp_{$entity->getKey()}"; 
        // refer to config under `database.connections.tenants.*`.

        return $config;
    });    
}

database.php

'tenants' => [
        'driver'    => 'mysql',
        'host'      => 'dbhost',     // for user with id=1
        'username'  => 'dbusername', // for user with id=1
        'password'  => 'dbpassword', // for user with id=1
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

Я также испытываю дилемму, что куда ставить

$user = App\User::whereSubdomain($request->route()->parameter('tenant'))->first();
Tenanti::driver('user')->asDefaultDatabase($user, 'comp_{id}');

Я пытаюсь аутентифицировать пользователей из моей основной базы данных и при аутентификации использовать базу данныхспециально для этого аутентифицированного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...