Recherche…
Étapes initiales
Plusieurs connexions de base de données, de tout type, peuvent être définies dans le fichier de configuration de la base de données (probablement app/config/database.php
). Par exemple, pour extraire des données de 2 bases de données MySQL, définissez-les séparément:
<?php
return array(
'default' => 'mysql',
'connections' => array(
# Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
La connexion par défaut est toujours définie sur mysql
. Cela signifie que, sauf indication contraire, l'application utilise la connexion mysql
.
Utilisation du générateur de schéma
Dans Schema Builder, utilisez la façade Schema avec n'importe quelle connexion. Exécutez la méthode connection()
pour spécifier la connexion à utiliser:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Utilisation du générateur de requêtes DB
Semblable à Schema Builder, définissez une connexion sur le générateur de requêtes:
$users = DB::connection('mysql2')->select(...);
Utiliser Eloquent
Il existe plusieurs façons de définir la connexion à utiliser dans les modèles Eloquent. Une façon consiste à définir la variable de connexion $ dans le modèle:
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
La connexion peut également être définie à l'exécution via la méthode setConnection
.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
De Laravel Documentation
Chaque connexion individuelle est accessible via la méthode de connexion sur la façade de la base de DB
, même si plusieurs connexions sont définies. Le name
transmis à la méthode de connection
doit correspondre à l'une des connexions répertoriées dans le fichier de configuration config/database.php
:
$users = DB::connection('foo')->select(...);
L'accès brut est également possible, sous-jacent à l'instance PDO en utilisant la méthode getPdo sur une instance de connexion:
$pdo = DB::connection()->getPdo();
https://laravel.com/docs/5.4/database#using-multiple-database-connections