2016-11-27 3 views
-1


Как я могу изменить базу данных в динамике Laravel? Допустим, мы имеем следующие переменные:
laravel 5 динамическая база данных mysql

  • $ хоста (MySQL имя хоста/IP)
  • $ пользователя (MySQL имя пользователя)
  • $ имя (имя базы данных MySQL)
  • $ проход (MySQL пароль пользователя)

Как подключиться к этому серверу mysql в Laravel 5 без установки его каждый раз в конфигурации?

Привет

+0

в '.env' файле? – jycr753

+0

@ jycr753 ах нет, я получаю эти переменные из своей внутренней базы данных, которая установлена ​​в **. Env **. Но мне нужно подключиться к внешним базам данных с переменными, и я не могу установить каждый сервер в config (+200), потому что пользователи удаляют свои серверы или добавляют новые ... –

ответ

1

Попробуйте это при условии, модель Book

use Book; 
 
use Illuminate\Support\Facades\DB; 
 
use Illuminate\Support\Facades\Config; 
 

 
public function configureDatabase($database){ 
 
     Config::set("database.connections.$database", array(
 
      'driver' => 'mysql', 
 
      'host'  => 'localhost', 
 
      'database' => "$database", 
 
      'username' => 'root',//User name here 
 
      'password' => '***', //Password here 
 
      'charset' => 'utf8', 
 
      'collation' => 'utf8_unicode_ci', 
 
      'prefix' => '', 
 
     )); 
 
    } 
 

 
public function getBooks($database){ 
 
    $this->configureDatabase($database) 
 
    return Book::on($database)->all(); 
 
}

+0

Могу ли я использовать конфигурацию, использующую почти неограниченное количество раз за одно исполнение? Устанавливается config :: set limited? –

+0

Конечно, вы можете. Документы не говорят, что вызов Config :: set() ограничен. Имейте в виду, что он создает новое соединение с другой базой данных, которая является дорогостоящим вычислением. –

+0

Спасибо. Можете ли вы ответить, почему мой вопрос был приостановлен? Что случилось? Нет кода? По этому вопросу я думаю, что кода не требуется. –

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