Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden Sie sich in Laravel 5.2 gleichzeitig mit vielen Datenbanken

Einführung - 2 Verbindungen

Angenommen, Sie benötigen 2 Verbindungen:Standard und kundenspezifisch , würden Sie ihre Konfiguration in Ihrer config/database.php bereitstellen wie üblich, dann brauchen Sie:

>>> DB::connection()->getDatabaseName()
=> "default"

>>> DB::connection('custom')->getDatabaseName()
=> "customized"

// change the config...
>>> config(['database.connections.custom.database' => 'new_customized_db'])
=> null

// ...but once the connection is already open, config change doesn't affect it...
>>> DB::connection('custom')->getDatabaseName()
=> "customized"

// ...so we need to get rid of existing connection completely (reconnect() won't work)
>>> DB::purge('custom')
=> null

>>> DB::connection('custom')->getDatabaseName()
=> "new_customized_db"

Mehr Verbindungen

Oben sehen Sie, was zu tun ist. In Ihrem Fall können Sie einfach gesamte Verbindungskonfiguration einfügen für jede neue Verbindung, die Sie benötigen, und es wird wie erwartet funktionieren:

>>> config(['database.connections.on_the_fly' => [
>>>    'database' => 'provided_on_the_fly',
>>>    ...
>>> ]])
=> null

>>> DB::connection('on_the_fly')->getDatabaseName()
=> "provided_on_the_fly"

Eloquent

Wenn Sie eine benutzerdefinierte Verbindung für Ihre Eloquent-Modelle verwenden möchten Sie können SomeModel::on('on_the_fly')->find($id) verwenden (abgerufenes Modell Instanz verwendet die Verbindung für alle nachfolgenden Operationen)