Im .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret
Im config/database.php
'mysql' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
Hinweis: In mysql2wenn DB_username und DB_PASSWORD gleich ist, dann können Sie verwenden , env('DB_USERNAME')die in metioned ist .enversten Zeilen.
Verbindungen definieren
app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database1',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database2',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Schema
Führen Sie einfach die connection()Methode aus, um anzugeben, welche Verbindung verwendet werden soll
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Abfrage Ersteller
$users = DB::connection('mysql2')->select(...);
Beredt
Legen Sie die $connectionVariable in Ihrem Modell fest
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Sie können die Verbindung auch zur Laufzeit über die setConnectionMethode oder die onstatische Methode definieren:
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2'); // non-static method
$something = $someModel->find(1);
$something = SomeModel::on('mysql2')->find(1); // static method
return $something;
}
}
Hinweis Seien Sie vorsichtig beim Versuch, Beziehungen zu Tabellen über Datenbanken hinweg aufzubauen! Dies ist möglich, kann jedoch mit einigen Einschränkungen verbunden sein und hängt davon ab, über welche Datenbank und / oder Datenbankeinstellungen Sie verfügen.
Verwenden mehrerer Datenbankverbindungen
Wenn Sie mehrere Verbindungen verwenden, können Sie connectionüber die Verbindungsmethode an der DBFassade auf jede zugreifen . Die namean die connectionMethode übergebene Verbindung sollte einer der in Ihrer config/database.phpKonfigurationsdatei aufgeführten Verbindungen entsprechen :
$users = DB::connection('foo')->select(...);
Sie können auch mit der getPdo-Methode für eine Verbindungsinstanz auf die zugrunde liegende unformatierte PDO-Instanz zugreifen:
$pdo = DB::connection()->getPdo();
Nützliche Links
- Laravel 5 Mehrfachdatenbankverbindung FROM
laracasts.com
- Verbinden Sie mehrere Datenbanken in Laravel FROM
tutsnare.com
- Mehrere DB-Verbindungen in Laravel FROM
fideloper.com
class SomeModel extends Model {und auch sicherstellen, dass Sie Get-Werte aus der env-Datei entfernt haben, wieenv('DB_DATABASE', 'name')beim Erstellen eines neuen DB-Konfigurationsarrays in der Datei database.php, wie @sba erwähnt hat