Szukaj…


Pierwsze kroki

W pliku konfiguracyjnym bazy danych (prawdopodobnie app/config/database.php ) można zdefiniować wiele połączeń z dowolnymi typami app/config/database.php . Na przykład, aby pobrać dane z 2 baz danych MySQL, zdefiniuj je oddzielnie:

<?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'    => '',
        ),
    ),
);

Domyślne połączenie jest nadal ustawione na mysql . Oznacza to, o ile nie określono inaczej, aplikacja korzysta z połączenia mysql .

Korzystanie z konstruktora schematów

W Konstruktorze schematów używaj elewacji schematu z dowolnym połączeniem. Uruchom metodę connection() , aby określić, którego połączenia użyć:

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

Korzystanie z konstruktora zapytań DB

Podobnie jak w programie budującym schematy, zdefiniuj połączenie w programie budującym kwerendy:

$users = DB::connection('mysql2')->select(...);

Korzystanie z Eloquent

Istnieje wiele sposobów określenia, które połączenie ma być używane w modelach Eloquent. Jednym ze sposobów jest ustawienie zmiennej $ connection w modelu:

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

Połączenie można również zdefiniować w czasie wykonywania za pomocą metody setConnection .

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2');

        $something = $someModel->find(1);

        return $something;
    }
}

Z dokumentacji Laravela

Do każdego pojedynczego połączenia można uzyskać dostęp za pomocą metody połączenia na fasadzie DB , nawet jeśli zdefiniowano wiele połączeń. name przekazana do metody connection powinna odpowiadać jednemu z połączeń wymienionych w pliku konfiguracyjnym config/database.php :

$users = DB::connection('foo')->select(...);

Można również uzyskać dostęp do surowej bazy danych PDO za pomocą metody getPdo w instancji połączenia:

$pdo = DB::connection()->getPdo();

https://laravel.com/docs/5.4/database#using-multiple-database-connections



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow