.env gebruiken>=5.0
(Getest op 5.5) (Werkt op 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'),
],
Opmerking: In
mysql2als DB_username en DB_password hetzelfde zijn, dan kun jeenv('DB_USERNAME')gebruiken die wordt vermeld in.enveerste paar regels.
Zonder .env <5.0
Verbindingen definiëren
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
Om aan te geven welke verbinding moet worden gebruikt, voert u gewoon de connection() . uit methode
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Query Builder
$users = DB::connection('mysql2')->select(...);
Eloquent
Stel de $connection in variabele in uw model
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
U kunt de verbinding ook tijdens runtime definiëren via de setConnection methode of de 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;
}
}
Opmerking Wees voorzichtig met het proberen relaties op te bouwen met tabellen in databases! Het is mogelijk om te doen, maar het kan met enkele kanttekeningen komen en hangt af van welke database en/of database-instellingen je hebt.
Van Laravel Docs
Meerdere databaseverbindingen gebruiken
Als je meerdere verbindingen gebruikt, heb je toegang tot elke connection via de verbindingsmethode op de DB facade. De name doorgegeven aan de connection methode moet overeenkomen met een van de verbindingen die worden vermeld in uw config/database.php configuratiebestand:
$users = DB::connection('foo')->select(...);
U kunt ook toegang krijgen tot de onbewerkte, onderliggende PDO-instantie met behulp van de getPdo-methode op een verbindingsinstantie:
$pdo = DB::connection()->getPdo();
Nuttige links
- Laravel 5 meervoudige databaseverbinding VANAF
laracasts.com - Verbind meerdere databases in laravel VANAF
tutsnare.com - Meerdere DB-verbindingen in Laravel VANAF
fideloper.com