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