Mysql
 sql >> Base de données >  >> RDS >> Mysql

Connectez-vous à de nombreuses bases de données simultanément dans Laravel 5.2

Intro - 2 connexions

En supposant que vous ayez besoin de 2 connexions :par défaut et personnalisé , vous fourniriez leur configuration dans votre config/database.php comme d'habitude, alors vous avez besoin de :

>>> 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"

Plus de connexions

Ci-dessus, vous pouvez voir ce qui doit être fait. Dans votre cas, vous pouvez simplement mettre toute la configuration de connexion pour chaque nouvelle connexion dont vous avez besoin, et cela fonctionnera comme prévu :

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

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

Éloquent

Si vous souhaitez utiliser une connexion personnalisée pour vos modèles Eloquent vous pouvez utiliser SomeModel::on('on_the_fly')->find($id) (instance de modèle extraite utilisera la connexion pour toutes les opérations ultérieures)