> 데이터 베이스 > MySQL 튜토리얼 > Laravel에서 여러 데이터베이스를 어떻게 사용할 수 있나요?

Laravel에서 여러 데이터베이스를 어떻게 사용할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-21 20:10:56
원래의
465명이 탐색했습니다.

How Can I Use Multiple Databases in Laravel?

Laravel에서 여러 데이터베이스 사용

Laravel의 다양성은 여러 데이터베이스를 동시에 처리하는 데까지 확장됩니다. 이를 수행하려면 다음 단계를 따르십시오.

연결 정의

.env >= 5.0 사용:

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 없음 <= 4.0:

app/config/database.php에서:

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

        # Secondary database connection
       'pgsql' => [
            'driver' => 'pgsql',
            'host' => 'localhost',
            'port' => '5432',
            'database' => 'pgsql_database',
            'username' => 'root',
            'password' => 'secret',
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
        ]
    ),
);</p>
<p><strong>스키마/마이그레이션</strong></p>
<p>connection() 메소드를 사용하여 연결 지정 :</p>
<pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table)
{
    $table->increments('id'):
});
로그인 후 복사

또는 다음에서 연결을 정의합니다. top:

protected $connection = 'pgsql';
로그인 후 복사

쿼리 빌더

$users = DB::connection('pgsql')->select(...);
로그인 후 복사

모델

(Laravel >= 5.0)

$connection 변수를 설정하세요. 모델:

class ModelName extends Model { // extend changed

    protected $connection = 'pgsql';

}
로그인 후 복사

(Laravel <= 4.0)

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}
로그인 후 복사

Eloquent

트랜잭션 모드

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
});</p>
<p>또는</p>
<pre class="brush:php;toolbar:false">DB::connection('mysql')->beginTransaction();
try {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->beginTransaction();
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
    DB::connection('pgsql')->commit();
    DB::connection('mysql')->commit();
} catch (\Exception $e) {
    DB::connection('mysql')->rollBack();
    DB::connection('pgsql')->rollBack();
    throw $e;
}
로그인 후 복사

런타임에 연결을 지정할 수도 있습니다:

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('pgsql'); // non-static method
        $something = $someModel->find(1);
        $something = SomeModel::on('pgsql')->find(1); // static method
        return $something;
    }
}
로그인 후 복사

관계 고려 사항

데이터베이스 간 관계 설정은 가능하지만 신중한 처리가 필요합니다. 사용된 특정 데이터베이스와 설정에 따라 달라집니다.

위 내용은 Laravel에서 여러 데이터베이스를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿