Поиск…
Начальные шаги
В файле конфигурации базы данных можно определить несколько соединений с базами данных любого типа (вероятно, app/config/database.php
). Например, чтобы вытащить данные из 2 баз данных MySQL, определите их как отдельно:
<?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' => '',
),
),
);
По умолчанию соединение по-прежнему установлено в mysql
. Это означает, что если не указано иное, приложение использует соединение mysql
.
Использование Schema builder
Внутри построителя схем используйте фасад схемы с любым подключением. Запустите метод connection()
чтобы указать, какое соединение использовать:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Использование построителя запросов БД
Подобно Schema Builder, определите соединение в Query Builder:
$users = DB::connection('mysql2')->select(...);
Использование эвкалипта
Существует несколько способов определить, какое соединение использовать в моделях Eloquent. Один из способов - установить переменную $ connection в модели:
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Соединение также может быть определено во время выполнения с помощью метода setConnection
.
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
Из документации Laravel
Доступ к каждому отдельному соединению возможен через метод соединения на фасаде DB
, даже если определено несколько подключений. name
переданное методу connection
должно соответствовать одному из соединений, перечисленных в конфигурационном файле config/database.php
:
$users = DB::connection('foo')->select(...);
Необработанный может быть также доступен, базовый экземпляр PDO, используя метод getPdo для экземпляра соединения:
$pdo = DB::connection()->getPdo();
https://laravel.com/docs/5.4/database#using-multiple-database-connections