Sök…
Inledande steg
Flera databasanslutningar, av vilken typ som helst, kan definieras inuti databaskonfigurationsfilen (sannolikt app/config/database.php
). För att till exempel dra data från 2 MySQL-databaser definierar du båda separat:
<?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' => '',
),
),
);
Standardanslutningen är fortfarande inställd på mysql
. Detta betyder om inte annat anges, applikationen använder mysql
anslutningen.
Med hjälp av Schema Builder
Använd schemafasaden i vilken som helst anslutning. Kör metoden för connection()
för att ange vilken anslutning som ska användas:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Använda DB-frågeställaren
På samma sätt som Schema Builder, definiera en anslutning i Query Builder:
$users = DB::connection('mysql2')->select(...);
Använda vältalande
Det finns flera sätt att definiera vilken anslutning som ska användas i Eloquent-modellerna. Ett sätt är att ställa in $ -anslutningsvariabeln i modellen:
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Anslutningen kan också definieras under körning via metoden setConnection
.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
Från Laravel-dokumentation
Varje enskild anslutning kan nås via anslutningsmetoden på DB
fasaden, även om det finns flera anslutningar definierade. name
skickas till connection
ska motsvara en av de anslutningar som anges i config/database.php
:
$users = DB::connection('foo')->select(...);
Det råa kan också nås, underliggande PDO-instans med getPdo-metoden i en anslutningsinstans:
$pdo = DB::connection()->getPdo();
https://laravel.com/docs/5.4/database#using-multiple-database-connections