Получить конкретную строку подключения к базе данных во время ведения журнала и динамически подключиться к этой базе данных в laravel 8?

Я разработал приложение для веб-бухгалтерского учета, используя ванильный PHP в качестве бэкэнда и jquery и ванильный javascript в качестве интерфейса. У каждого клиента будет одна база данных. Единая база данных содержит все строки подключения к базе данных клиента и учетные данные для клиентов. Всякий раз, когда клиент входит в систему с использованием учетных данных, клиент получает строку подключения из главной базы данных, в которой хранятся все подключения к базе данных. На основе учетных данных мой бэкэнд будет подключаться к их базе данных. Они будут работать со своей базой данных.

введите описание изображения здесь

Как я могу достичь этого сценария с помощью laravel 8? Я пробовал несколько решений, например, Динамическое подключение к базе данных в Laravel, Создать динамическое соединение с базой данных в Laravel, Динамическое соединение с базой данных Laravel 5.8 не установлено в модели, динамическое соединение с базой данных laravel 5.4, Настроить соединения с базой данных на лету в Laravel

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

так что вы, ребята, посоветуете преодолеть этот сценарий?

и я не хочу использовать настройку Multi-Tenant, это просто излишество, и я действительно хочу, чтобы захватить строку подключения во время регистрации и использовать эту строку подключения для подключения конкретной базы данных пользователя. так что своеобразный динамичный!


person hydr4h4ck3r    schedule 19.05.2021    source источник


Ответы (2)


  1. Добавьте подключение к config / database.php (вы можете скопировать и отредактировать имя.) Ex. скопируйте и измените имя на mysql_user
  2. Сделать промежуточное ПО
  3. Проверьте аутентификацию в промежуточном программном обеспечении и получите учетные данные
  4. Установить конфигурацию в промежуточном программном обеспечении
Config::set('database.connections.mysql_user',[
'host' => $user->connaction->host,
'user' => $user->connaction->user,
...
])
  1. Когда вы используете
DB::connection('mysql_user')->...

#in Model
protected $connection= 'mysql_user';
  1. Не забывайте использовать промежуточное ПО
person akoneko47    schedule 19.05.2021

Похоже, вы ищете многопользовательскую установку. Один из вариантов - использовать пакет tenancy/multi-tenant, как описано здесь: https://blog.peretch.com/multi-tenant-implementation-with-laravel-8-5d4471ed4c40

person dododedodonl    schedule 19.05.2021