Suche…


Erste Schritte

In der Datenbankkonfigurationsdatei können mehrere Datenbankverbindungen jeglichen Typs definiert werden (wahrscheinlich app/config/database.php ). Um beispielsweise Daten aus 2 MySQL-Datenbanken abzurufen, definieren Sie beide getrennt:

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

Die Standardverbindung ist immer noch auf mysql . Das heißt, wenn nicht anders angegeben, verwendet die Anwendung die mysql Verbindung.

Schema Builder verwenden

Verwenden Sie im Schema-Builder die Schema-Fassade für jede Verbindung. Führen Sie die Methode connection() , um anzugeben, welche Verbindung verwendet werden soll:

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

DB Query Builder verwenden

Definieren Sie ähnlich wie der Schema-Generator eine Verbindung im Abfrage-Generator:

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

Eloquent verwenden

Es gibt mehrere Möglichkeiten, zu definieren, welche Verbindung in den Eloquent-Modellen verwendet werden soll. Eine Möglichkeit besteht darin, die $ connection- Variable im Modell festzulegen:

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

Die Verbindung kann auch zur Laufzeit über die Methode setConnection werden.

<?php

class SomeController extends BaseController {

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

        $someModel->setConnection('mysql2');

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

        return $something;
    }
}

Aus der Laravel-Dokumentation

Auf jede einzelne Verbindung kann über die Verbindungsmethode an der DB Fassade zugegriffen werden, auch wenn mehrere Verbindungen definiert sind. Der an die connection name sollte einer der in der Konfigurationsdatei config/database.php aufgeführten connection entsprechen:

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

Auf das Raw kann auch zugegriffen werden, wobei die PDO-Instanz mit der Methode getPdo für eine Verbindungsinstanz zugrunde liegt:

$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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow