Laravel 애플리케이션으로 작업할 때 여러 데이터베이스가 필요한 상황에 직면하는 것이 일반적입니다. 이러한 경우 Laravel 애플리케이션 내에서 이러한 데이터베이스를 효과적으로 관리하고 상호 작용하는 방법을 이해하는 것이 중요합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!