[Laravel] 다중 데이타 베이스 연결하기

[Laravel] 다중 데이타 베이스 연결하기 updated_at: 2024-01-04 15:07

다중 연결 데이타 베이스

하나의 어플리케이션에서 다양한 데이타 베이스를 연결할때 사용하는 방식입니다.

여러개의 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(...);
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글