sql >> Database >  >> RDS >> Mysql

Meerdere databases gebruiken in Laravel

.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 je env('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

  1. Laravel 5 meervoudige databaseverbinding VANAF laracasts.com
  2. Verbind meerdere databases in laravel VANAF tutsnare.com
  3. Meerdere DB-verbindingen in Laravel VANAF fideloper.com


  1. Waarom hebben gehele getallen in databaserij-tuple een 'L'-achtervoegsel?

  2. Geef WAAR parameters door aan PostgreSQL View?

  3. Hoe het schema van meerdere PostgreSQL-tabellen in één bewerking te wijzigen?

  4. Hoe te migreren van MSSQL naar MySQL