[Laravel] 다중 데이타 베이스 연결하기
다중 연결 데이타 베이스
하나의 어플리케이션에서 다양한 데이타 베이스를 연결할때 사용하는 방식입니다.
여러개의 mysql 과 동시에 사용하기
1. .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mysql_database
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION2=mysql
DB_HOST2=127.0.0.1
DB_PORT2=3306
DB_DATABASE2=mysql2_database
DB_USERNAME2=root
DB_PASSWORD2=secret
..........
2. 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'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION2'),
'host' => env('DB_HOST2'),
'port' => env('DB_PORT2'),
'database' => env('DB_DATABASE2'),
'username' => env('DB_USERNAME2'),
'password' => env('DB_PASSWORD2'),
],
3. connection
다양하게 사용하는 방법이 있습니다.
3.1 Model 에서 connection을 구현하는 방법
class ModelName extends Model { // extend changed
protected $connection = 'pgsql'; // 일반적으로는 생략 가능하며 생략할 경우 맨 처음 나오는 것을 사용한다.
}
use App\Models\ModelName;
..........
ModelName::select(...);
3.2 Query에서 직접 구현하는 방법
$users = DB::connection('mysql2')->select(...);
mysql 과 pgsql(이종 db간) 동시에 사용하기
위에 정의된 것과 동일하다.
1. .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mysql_database
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_PGSQL=pgsql
DB_HOST_PGSQL=127.0.0.1
DB_PORT_PGSQL=5432
DB_DATABASE_PGSQL=pgsql_database
DB_USERNAME_PGSQL=root
DB_PASSWORD_PGSQL=secret
2. 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'),
],
'pgsql' => [
'driver' => env('DB_CONNECTION_PGSQL'),
'host' => env('DB_HOST_PGSQL'),
'port' => env('DB_PORT_PGSQL'),
'database' => env('DB_DATABASE_PGSQL'),
'username' => env('DB_USERNAME_PGSQL'),
'password' => env('DB_PASSWORD_PGSQL'),
],
3. connection
다양하게 사용하는 방법이 있습니다.
3.1 Model 에서 connection을 구현하는 방법
class ModelName extends Model { // extend changed
protected $connection = 'pgsql'; // 일반적으로는 생략 가능하며 생략할 경우 맨 처음 나오는 것을 사용한다.
}
use App\Models\ModelName;
..........
ModelName::select(...);
3.2 Query에서 직접 구현하는 방법
$users = DB::connection('pgsql')->select(...);