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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow