Ricerca…
Passi iniziali
Connessioni multiple di database, di qualsiasi tipo, possono essere definite all'interno del file di configurazione del database (probabile app/config/database.php
). Ad esempio, per estrarre dati da 2 database MySQL definirli entrambi separatamente:
<?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' => '',
),
),
);
La connessione predefinita è ancora impostata su mysql
. Ciò significa che, se non diversamente specificato, l'applicazione utilizza la connessione mysql
.
Utilizzo del builder Schema
All'interno di Schema Builder, utilizzare la facciata dello schema con qualsiasi connessione. Esegui il metodo connection()
per specificare quale connessione usare:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Utilizzando DB query builder
Simile a Schema Builder, definire una connessione nel Query Builder:
$users = DB::connection('mysql2')->select(...);
Uso di Eloquent
Esistono diversi modi per definire quale connessione usare nei modelli Eloquent. Un modo è impostare la variabile $ connection nel modello:
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
La connessione può anche essere definita in fase di esecuzione tramite il metodo setConnection
.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
Da Laravel Documentation
È possibile accedere a ogni singola connessione tramite il metodo di connessione sulla facciata del DB
, anche quando sono definite più connessioni. Il name
passato al metodo di connection
dovrebbe corrispondere a una delle connessioni elencate nel file di configurazione config/database.php
:
$users = DB::connection('foo')->select(...);
È anche possibile accedere al raw, l'istanza PDO sottostante utilizzando il metodo getPdo su un'istanza di connessione:
$pdo = DB::connection()->getPdo();
https://laravel.com/docs/5.4/database#using-multiple-database-connections