>백엔드 개발 >PHP 튜토리얼 >Laravel에서 여러 데이터베이스 연결을 관리하는 방법은 무엇입니까?

Laravel에서 여러 데이터베이스 연결을 관리하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-04 11:11:35404검색

How to Manage Multiple Database Connections in Laravel?

Laravel에서 여러 데이터베이스 관리

Laravel 애플리케이션으로 작업할 때 여러 데이터베이스가 필요한 상황에 직면하는 것이 일반적입니다. 이러한 경우 Laravel 애플리케이션 내에서 이러한 데이터베이스를 효과적으로 관리하고 상호 작용하는 방법을 이해하는 것이 중요합니다.

Laravel의 Database Facade

Laravel은 DB Facade를 제공합니다. 다른 데이터베이스 연결에 액세스합니다. DB Facade에서 제공하는 연결 방법을 활용하여 개발자는 여러 데이터베이스에 대한 연결을 설정하고 검색할 수 있습니다. 연결 방법에는 config/database.php 구성 파일에 정의된 연결 이름에 해당하는 매개변수가 필요합니다.

$users = DB::connection('foo')->select(...);

데이터베이스 연결 구성

.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

사용 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'),
],

.env 제외(Laravel <= 4.0):

return array(
    'default' => 'mysql',
    'connections' => array(
        'mysql' => array(
            'driver' => 'mysql',
            'host' => '127.0.0.1',
            'database' => 'mysql_database',
            'username' => 'root',
            'password' => 'secret',
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
        ),

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => 'localhost',
            'port' => '5432',
            'database' => 'pgsql_database',
            'username' => 'root',
            'password' => 'secret',
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
        ]
    ),
);<h3>쿼리 및 모델 조작</h3>
<p><strong>스키마</strong>:</p>
<p>연결 방법을 적용하여 스키마 작업을 위한 데이터베이스를 지정할 수 있습니다.</p>
<pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table){ ... });

쿼리 Builder:

$users = DB::connection('pgsql')->select(...);

모델:

모델에서 연결을 명시적으로 정의할 수 있습니다. class:

class ModelName extends Model {
    protected $connection = 'pgsql';
}

Eloquent:

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}

트랜잭션

트랜잭션은 여러 데이터베이스에서 관리될 수도 있습니다.

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(...);
    DB::connection('pgsql')->table('orders')->update(...);
});

런타임 연결 관리

연결 동적으로 설정할 수 있습니다.

$someModel = new SomeModel;
$someModel->setConnection('pgsql'); // non-static
$something = $someModel->find(1);
$something = SomeModel::on('pgsql')->find(1); // static

관계 및 주의 사항

다양한 데이터베이스 간의 관계를 처리할 때는 주의하세요. 가능하지만 데이터베이스 설정 및 설정을 신중하게 고려해야 할 수도 있습니다.

위 내용은 Laravel에서 여러 데이터베이스 연결을 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.