ホームページ >バックエンド開発 >PHPチュートリアル >Laravelで複数のデータベース接続を管理するにはどうすればよいですか?
Laravel アプリケーションを使用する場合、複数のデータベースが必要になる状況がよく発生します。このような場合、Laravel アプリケーション内でこれらのデータベースを効果的に管理し、操作する方法を理解することが重要です。
Laravel は、データベースの中心点として機能する DB ファサードを提供します。さまざまなデータベース接続にアクセスします。 DB ファサードが提供する接続メソッドを利用することで、開発者は複数のデータベースへの接続を確立および取得できます。接続メソッドでは、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 :
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', ] ), );
スキーマ:
接続メソッドを適用して、スキーマ操作用のデータベースを指定できます:
Schema::connection('pgsql')->create('some_table', function($table){ ... });
クエリBuilder:
$users = DB::connection('pgsql')->select(...);
Models:
接続はモデル内で明示的に定義できます。 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 中国語 Web サイトの他の関連記事を参照してください。