데이터베이스 연결정보를 환경변수에 추가하기

먼저 여러 데이터베이스에 연결을 하기 해서는 연결하려는 여러 데이터베이스 정보를 알고 있어야 겠죠? 그렇다면 이 정보들을 어디에 저장하는가하면 바로 ".env" 파일에 저장을 합니다.

기본적으로 입력 되어있는 정보 밑에 데이터베이스 정보를 새로 추가하면 되겠습니다.

// .env

APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

...

////////////////////

DB1_HOST=127.1.2.3       
DB1_PORT=4010
DB1_DATABASE=newDB
DB1_USERNAME=newID
DB1_PASSWORD=newPW

DB2_HOST=127.4.5.6
DB2_PORT=4411
...


데이터베이스 설정 파일에 연결정보 추가하기

데이터베이스 설정파일(database.php)에 DB를 추가합니다.

// config/database.php
    'connections' => [
        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
        // DB 추가
        'newDB1' => [
            'driver' => 'mysql',
            'host' => env('DB1_HOST', '127.0.0.1'),
            'port' => env('DB1_PORT', '3306'),
            'database' => env('DB1_DATABASE', 'forge'),
            'username' => env('DB1_USERNAME', 'forge'),
            'password' => env('DB1_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
        'newDB2' => [
            'driver' => 'mysql',
            'host' => env('DB2_HOST', '127.0.0.1'),
            'port' => env('DB2_PORT', '3306'),
            'database' => env('DB2_DATABASE', 'forge'),
            'username' => env('DB2_USERNAME', 'forge'),
            'password' => env('DB2_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ]
        // !-- DB 추가 끝
    ]

    ...

Model에서의 사용 예

위에서 추가한 데이터베이스의 테이블 정보를 가져오는 Model을 생성해보겠습니다.

// php artisan make:model NewModel

namespace App;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
    protected $connection = 'newDB1';
    protected $table = 'new_table';
}