Zoeken…
Eerste stappen
Meerdere databaseverbindingen, van welk type dan ook, kunnen worden gedefinieerd in het databaseconfiguratiebestand (waarschijnlijk app/config/database.php
). Als u bijvoorbeeld gegevens uit 2 MySQL-databases wilt ophalen, definieert u ze beide afzonderlijk:
<?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' => '',
),
),
);
De standaardverbinding is nog steeds ingesteld op mysql
. Dit betekent dat, tenzij anders aangegeven, de toepassing de mysql
verbinding gebruikt.
Schemabuilder gebruiken
Gebruik in de Schema Builder de Schema-gevel met elke verbinding. Voer de methode connection()
om op te geven welke verbinding moet worden gebruikt:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
DB Query Builder gebruiken
Net als bij Schema Builder, definieert u een verbinding in de Query Builder:
$users = DB::connection('mysql2')->select(...);
Eloquent gebruiken
Er zijn meerdere manieren om te bepalen welke verbinding moet worden gebruikt in de Eloquent-modellen. Een manier is om de $ -verbindingsvariabele in het model in te stellen:
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
De verbinding kan ook tijdens runtime worden gedefinieerd via de methode setConnection
.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
Uit Laravel-documentatie
Elke individuele verbinding is toegankelijk via de verbindingsmethode op de DB
gevel, zelfs wanneer er meerdere verbindingen zijn gedefinieerd. De name
doorgegeven aan de connection
moet overeenkomen met een van de verbindingen in het config/database.php
:
$users = DB::connection('foo')->select(...);
U kunt ook toegang krijgen tot de onbewerkte, onderliggende PDO-instantie met behulp van de methode getPdo op een verbindingsinstantie:
$pdo = DB::connection()->getPdo();
https://laravel.com/docs/5.4/database#using-multiple-database-connections