2016-07-08 2 views
3

Недавно я узнал о Laravel Framework, который является удивительным, но просто хочу знать один запрос, который до сих пор остается загадкой для меня.Изменить базу данных существующего соединения с базой данных - Laravel

Я знаю, что мы можем легко изменить «Database Connection» использованием

 $users = DB::connection('mysql2')->select(...); 

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

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

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

например.

Если мы используем «DB1» соединение с базы данных «test1», как определено в файле конфигурации,

Мне нужен способ, чтобы изменить базу данных «test1» в «test2» ДИНАМИЧЕСКИ

+0

Почему у вас есть несколько баз данных? –

+0

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

ответ

1

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

Config::set('database.connections.DB1.test1', 'test2'); 
+0

Спасибо. Это может помочь. –

1

Вы могли бы сохранить подключения к базе данных для каждого пользователя в «центральной» базе данных. Запросите эту базу данных, найдите соответствующие параметры соединения и используйте их для запроса к базе данных пользователя.

Приложения с несколькими арендаторами используют аналогичный подход. Я создал package для создания многопользовательских приложений с Laravel. Этот пакет требует, чтобы «арендаторы» определялись в файле конфигурации ... который вам не нужен. Взгляните на исходный код tho. Это может помочь вам выработать новые идеи.

Смежные вопросы