본문 바로가기

개발/PHP 라라벨

라라벨 MSSQL DB 추가 연결

현재 라라벨로 진행중인 프로젝트에 다른 시스템과 연동하면서 MS-SQL 을 연결하여 작업할 일이 생겼다.

 

Ubuntu 16.04

Laravel 5.6

PHP 7.4

 

PHP 관련 설치 및 설정


sqlsrv 를 설치하려면 phpize 가 필요해서 아래와같이 설치해준다.

 

sudo apt install php7.4-dev

 

이후 필수 구성요소 설치를 위해 아래와 같이 설치

 

Microsoft ODBC Driver for SQL Server 설치(Linux)

 

sudo su curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc

 

php 드라이버 설치

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.4/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.4/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 7.4 sqlsrv pdo_sqlsrv

 

라라벨 설정


DB 정보는 .env 파일과 config/database.php 파일에서 설정할수 있다.

 

.env 설정 추가

DB_MSSQL_CONNECTION=sqlsrv
DB_MSSQL_HOST=10.0.0.123
DB_MSSQL_PORT=1433
DB_MSSQL_DATABASE=dbname
DB_MSSQL_USERNAME=username
DB_MSSQL_PASSWORD=userpwd

conf/database.php 

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

 

위 두 설정이면 DB 를 사용가능하다.

이때 charset 을 utf8로 해주지 않으면 한글이 깨질수 있으니 주의가 필요하다.

이제 모델에서 DB 연결 작업을 해주면 controller 에서 어떤 DB 를 사용하든지 신경쓰지 않고 비즈니스로직에만 집중할수 있다.

 

Models/Board.php

protected $connection = 'mssql';

 

Controller 

$board = Board::all();

컨트롤러에서 다른 모델과 동일하게 사용가능하다. 

한글도 깨지지 않고 리턴되어 오는것 확인!!