Я хочу внедрить 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}');
Я пытаюсь аутентифицировать пользователей из моей основной базы данных и при аутентификации использовать базу данныхспециально для этого аутентифицированного пользователя.