Laravel-Hyn Мультитенантная настройка соединения арендатора, кажется, не решает арендаторов и сеансы - PullRequest
0 голосов
/ 17 марта 2019

Я разрабатываю мультитенантное приложение на php с использованием Laravel 5.7.28, Hyn / Multi-tenant 5.3 в локальной среде хоста. Соединение для аренды осуществляется с использованием промежуточного программного обеспечения forcece.tenancy согласно старому учебнику. Соединения с базой данных (config / database.php), как показано ниже: (пропущены нежелательные строки)

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

    'system' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'tenancy'),
        'username' => env('DB_USERNAME', 'xxxx'),
        'password' => env('DB_PASSWORD', 'xxxxx'),
        ......
    ],

'tenant' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', '914fb6c2sx'),
        'username' => env('DB_USERNAME', 'xxxx'),
       'password' => env('DB_PASSWORD', 'xxxxx'),
        ......
    ],

'tenant' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', '7239b4a43a'),
        'username' => env('DB_USERNAME', 'xxxx'),
        'password' => env('DB_PASSWORD', 'xxxx'),
        ......
    ],

У меня есть сеансы настройки (config / sessions.php)

/*
|----------------------------------------
| Session Cookie Domain
|----------------------------------------
|
*/
'domain' => env('SESSION_DOMAIN', '.abcd.in'), 

Теперь я могу войти точно так же, используя ту же таблицу пользователей доменов. Если я вхожу в одно подключение арендатора, я могу перейти к подключению второго домена арендатора для той же роли без входа в систему и наоборот, то есть, если я выхожу из одного домена, я выхожу из второго домена. Я также использую пакет Spatie / role-permissions. Я думаю, что я ошибаюсь где-то в настройке соединения арендатора и / или обработке сеанса. Мой код выполняется хорошо.

Мое первое сомнение в проблеме - это подключение арендатора, показанное выше. Во всех арендаторах я использую имя подключения как «арендатор». Является ли соединение арендатора в hyn / multi-tenant массивом? Я имею в виду, что он ищет правильное имя базы данных домена в массиве подключения арендатора? Этот аспект мне не понятен. Если я ошибочно назвал все подключения арендатором, то я попытался назвать арендаторов как «tenant1», «tenant2», ... (эта установка не сработала). Как можно настроить сеансы в этом Hyn / Multi-Tenancy. Я пытаюсь использовать redis, но не знаю, как настроить redis в localhost.

1 Ответ

0 голосов
/ 17 марта 2019

Я сам использую пакет hyn для мультитенантного приложения, вам нужно только один раз определить подключение к базе данных арендатора, оставив db, user, pass пустым, поскольку пакет hyn установит правильные детали во время выполнения.В вашем примере у вас есть две установки базы данных арендатора с тем же именем, которые не будут работать очень хорошо.

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