Laravel установил динамическую конфигурационную переменную для всего проекта - PullRequest
0 голосов
/ 01 февраля 2019

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

Вот как мой код выглядит сейчас:

$website = Website::where('hash', '=', $hash)->first();

config(['database.connections.extern.host' => $website->db_host]);
config(['database.connections.extern.database' => $website->db_name]);
config(['database.connections.extern.username' => $website->db_username]);
config(['database.connections.extern.password' => $website->db_password]);

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

Кто-нибудь знает решение этой «проблемы»?

1 Ответ

0 голосов
/ 01 февраля 2019

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

foreach (Website::all() as $website) {
    config(['database.connections.'.$website->hash.'.host' => $website->db_host]);
    ...
}

А затем использовать хэш веб-сайта для подключения к соответствующей БД:

DB::connection($hash) ...

В любом случае, это не очень хороший способ управления другими базами данных, если они находятся на разных хостах.Вы лучше использовать технику веб-сервисов, чтобы сделать такую ​​работу.Подключение к внешней БД потенциально небезопасно.

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