.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
mysql2
als DB_username en DB_password hetzelfde zijn, dan kun jeenv('DB_USERNAME')
gebruiken die wordt vermeld in.env
eerste 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