Verwendung von .env
>=5,0
(Getestet auf 5.5) (Funktioniert auf 8 )
In .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
In 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 identisch sind, können Sie env('DB_USERNAME')
verwenden was in .env
erwähnt wird ersten Zeilen.
Ohne .env
<5.0
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
Um anzugeben, welche Verbindung verwendet werden soll, führen Sie einfach connection()
aus Methode
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Abfragegenerator
$users = DB::connection('mysql2')->select(...);
Eloquent
Setzen Sie die $connection
Variable in Ihrem Modell
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Sie können die Verbindung auch zur Laufzeit über setConnection
definieren Methode oder die on
statische Methode:
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, wenn Sie versuchen, Beziehungen zu Tabellen über Datenbanken hinweg aufzubauen! Es ist möglich, aber es kann mit einigen Vorbehalten verbunden sein und hängt davon ab, welche Datenbank und/oder Datenbankeinstellungen Sie haben.
Von Laravel Docs
Mehrere Datenbankverbindungen verwenden
Wenn Sie mehrere Verbindungen verwenden, können Sie auf jede connection
zugreifen über die Verbindungsmethode auf der DB
Fassade. Der name
an die connection
übergeben -Methode sollte einer der in Ihrer config/database.php
aufgelisteten Verbindungen entsprechen Konfigurationsdatei:
$users = DB::connection('foo')->select(...);
Sie können auch auf die rohe, zugrunde liegende PDO-Instanz zugreifen, indem Sie die getPdo-Methode auf einer Verbindungsinstanz verwenden:
$pdo = DB::connection()->getPdo();
Nützliche Links
- Laravel 5 multiple database connection FROM
laracasts.com
- Verbinden Sie mehrere Datenbanken in Laravel VON
tutsnare.com
- Mehrere DB-Verbindungen in Laravel VON
fideloper.com