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