はじめに
最新のアプリケーションでは、多くの場合、多様なデータ ソースを管理するために複数のデータベースにアクセスする必要があります。 。 Laravel は、複数のデータベースをアプリケーションにシームレスに統合するためのさまざまな機能を提供することで、このプロセスを簡素化します。
DB ファサードの利用
Laravel でさまざまなデータベースへの接続を確立するには、 DB ファサードの接続方法を活用します。定義する各接続は、config/database.php ファイル内の構成エントリに対応します。
データベース接続の定義
.env または config/database を使用してデータベース接続を構成します。 .php ファイル。 .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' => 'mysql', 'host' => env('DB_HOST'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD') ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST_PGSQL'), 'database' => env('DB_DATABASE_PGSQL'), 'username' => env('DB_USERNAME_PGSQL'), 'password' => env('DB_PASSWORD_PGSQL') ]
複数のデータベースの操作
接続を定義した後、次のような接続メソッドを使用して接続にアクセスできます。例:
// Database operations on 'mysql' database $users = DB::connection('mysql')->select(...); // Database operations on 'pgsql' database $orders = DB::connection('pgsql')->select(...);
スキーマ、移行、およびクエリ ビルダー
特定のデータベースでスキーマ、移行、またはクエリ ビルダーの操作を実行するには、接続方法:
// Schema operations on 'pgsql' database Schema::connection('pgsql')->create('some_table', function($table) {}); // Migrations on 'mysql' database Artisan::call('migrate', ['--connection' => 'mysql']); // Query builder operations on 'pgsql' database $results = DB::connection('pgsql')->select(...);
モデルとEloquent
モデルまたは Eloquent オペレーションに特定のデータベースを使用するには、モデルで $connection プロパティを設定します:
// Model using 'pgsql' database class User extends Model { protected $connection = 'pgsql'; }
トランザクション管理
複数のデータベース間でトランザクションを実行するには、トランザクションを使用しますメソッド:
DB::transaction(function () { DB::connection('mysql')->table('users')->update(['name' => 'John']); DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']); });
実行時接続の選択
また、setConnection メソッドまたは静的メソッドの on を使用してデータベース接続を動的に変更することもできます:
// Runtime connection change $someModel = new SomeModel; $someModel->setConnection('pgsql'); // Static connection change $something = SomeModel::on('pgsql')->find(1);
注: データベース間のテーブル間の関係を確立する場合は注意が必要です。可能ですが、複雑さが生じる可能性があります。
以上がLaravel で複数のデータベースを効率的に接続して管理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。