라라벨 DB 다중 연결하기

보람·2022년 1월 19일
0

Laravel

목록 보기
2/4
post-thumbnail

일반 웹사이트는 DB서버를 한가지만 (mysql, mssql, pgsql 등 중에서 한가지) 사용한다.

하지만 mysql만 사용하는 회사에서 외부 업체의 mssql을 함께 사용해야 하는 일이 생긴다면?
아니면 개발 DB가 존재하는 회사에서 1월 DB에 있는 테스트 데이터를 2월 DB로 마이그레이션 해야 할 일이 온다면?

라라벨에서는 이를 위해서 DB 멀티 연결을 제공한다.

/config/database.php 파일에 아래와 같이 추가해준다.

'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', ''),
            'username' => env('DB_USERNAME', ''),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => '',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

        'mssql' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_MSSQL_HOST', ''),
            'port' => env('DB_MSSQL_PORT', ''),
            'database' => env('DB_MSSQL_DATABASE', ''),
            'username' => env('DB_MSSQL_USERNAME', ''),
            'password' => env('DB_MSSQL_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
        ],
],

이렇게 하게되면 기본 연결 DB는 mysql이지만 mssql이나 다른 엔드포인트의 DB도 연결할 수 있는 환경이 구성된다.

만일 테이블 모델에서 mssql을 사용하고자 한다면 아래와 같이 변수값 하나만 추가해주면 된다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class YourModel extends Model
{
    protected $connection = 'mssql';
    protected $table ='your_table';
}

바로 $connection 변수를 사용하면 된다.

위와 같이 모델을 구성하여 기존 라라벨 모델처럼 동일하게 사용할 수 있다.

profile
백엔드 개발자

0개의 댓글