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 mysql2
wenn DB_username und DB_PASSWORD gleich ist, dann können Sie verwenden , env('DB_USERNAME')
die in metioned ist .env
ersten 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 $connection
Variable in Ihrem Modell fest
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Sie können die Verbindung auch zur Laufzeit über die setConnection
Methode oder die on
statische 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 DB
Fassade auf jede zugreifen . Die name
an die connection
Methode übergebene Verbindung sollte einer der in Ihrer config/database.php
Konfigurationsdatei 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