Laravel несколько баз данных

01.02.2020

В одном проекте может потребоваться обращаться к 2 или более базам данных. Ниже опишу, как моно настроить подключение к нескольким базам данных на laravel.

Первоначально в настройках Laravel нужно указать данные для соединения. Файл .env (в корне проекта):

 
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel
DB_USERNAME=laravel
DB_PASSWORD=PASSWORD

DB2_CONNECTION=mysql
DB2_HOST=192.168.0.101
DB2_PORT=3306
DB2_DATABASE=db_laravel2
DB2_USERNAME=laravel2
DB2_PASSWORD=PASSWORD

Дальше в config/database.php (в старых версиях app/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'),
],

'mysql_remote' => [
    'driver'    => env('DB2_CONNECTION'),
    'host'      => env('DB2_HOST'),
    'port'      => env('DB2_PORT'),
    'database'  => env('DB2_DATABASE'),
    'username'  => env('DB2_USERNAME'),
    'password'  => env('DB2_PASSWORD'),
],

После этого можно указывать имя соединения (mysql_remote) в запросах, моделях и т.д.

 
$aTMP = DB::connection('mysql_remote')->select(...);

Schema::connection('mysql_remote')->create('some_table', function($table)
{
    $table->...
});

Если имя соединения не будет указано, то запрос пойдет через первое объявленное в config/database.php.


Категории: Laravel
Пометки: laravel 6 Using Multiple Database Connections
Яндекс.Метрика