2016-12-14 7 views
3

Мне нужно создать несколько соединений для доступа к различным базам данных/схеме. Не могу использовать с одним dbconnection. Есть ли способ передать имя базы данных в larvel eloquent или db builder? В настоящее время в raw php я использую одно соединение для запроса другой схемы.LARAVEL Eloquent query multiple schema

ответ

3

Создайте различные соединения с вашим файлом database.php, а затем передайте их своим красноречивым моделям.

'mysql1' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_HOST', 'localhost'), 
    'database' => 'db1', 
    'username' => 'root', 
    'password' => '', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

// connection 2 
'mysql2' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_HOST', 'localhost'), 
    'database' => 'db2', 
    'username' => 'root', 
    'password' => '', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

Предположим, что у меня есть модель User.php использует подключение к MySQL с именем mysql1

внутри моей модели я добавлю:

protected $connection = 'mysql1'; 

, если я хочу использовать соединение MySQL с именем mysql2 тогда я использование

protected $connection = 'mysql2'; 

Здесь я устанавливаю соединения статически в мод ELS.

+0

Спасибо большое за информацию – Arav

+0

Рад, что это помогло! –

1

В красноречив, я использую DB: соединение(), чтобы установить свое соединение с именем, например, так:

 $query = DB::connection('db_connection_name')->table($this->table) 

Если вы не знаете, соединения с базой данных названы в конфигурации приложения/конфигурации/базы данных .php

+0

Большое спасибо за информацию – Arav