Zoeken…


Eerste stappen

Meerdere databaseverbindingen, van welk type dan ook, kunnen worden gedefinieerd in het databaseconfiguratiebestand (waarschijnlijk app/config/database.php ). Als u bijvoorbeeld gegevens uit 2 MySQL-databases wilt ophalen, definieert u ze beide afzonderlijk:

<?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'    => '',
        ),
    ),
);

De standaardverbinding is nog steeds ingesteld op mysql . Dit betekent dat, tenzij anders aangegeven, de toepassing de mysql verbinding gebruikt.

Schemabuilder gebruiken

Gebruik in de Schema Builder de Schema-gevel met elke verbinding. Voer de methode connection() om op te geven welke verbinding moet worden gebruikt:

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

DB Query Builder gebruiken

Net als bij Schema Builder, definieert u een verbinding in de Query Builder:

$users = DB::connection('mysql2')->select(...);

Eloquent gebruiken

Er zijn meerdere manieren om te bepalen welke verbinding moet worden gebruikt in de Eloquent-modellen. Een manier is om de $ -verbindingsvariabele in het model in te stellen:

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

De verbinding kan ook tijdens runtime worden gedefinieerd via de methode setConnection .

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2');

        $something = $someModel->find(1);

        return $something;
    }
}

Uit Laravel-documentatie

Elke individuele verbinding is toegankelijk via de verbindingsmethode op de DB gevel, zelfs wanneer er meerdere verbindingen zijn gedefinieerd. De name doorgegeven aan de connection moet overeenkomen met een van de verbindingen in het config/database.php :

$users = DB::connection('foo')->select(...);

U kunt ook toegang krijgen tot de onbewerkte, onderliggende PDO-instantie met behulp van de methode getPdo op een verbindingsinstantie:

$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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow