在 Laravel 中使用多個資料庫
在一個系統中管理多個資料庫是許多應用程式中的常見需求。 Laravel 透過其資料庫外觀有效地處理了這種情況。
利用資料庫外觀
資料庫外觀提供了一種連接方法,讓您可以存取配置中定義的各種連接/database.php 設定檔。若要存取特定連接,請使用以下語法:
$users = DB::connection('foo')->select(...);
定義連接
在Laravel 版本5.0 及更高版本中,連接在.env 檔案中定義或config/database.php.
.env(Laravel 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'), ],
架構和遷移
呼叫Connection()方法指定模式或遷移的連接操作:
Schema::connection('pgsql')->create('some_table', function($table) { $table->increments('id'); });
查詢產生器
與模式操作類似,使用connection()方法進行查詢:
$users = DB::connection('pgsql')->select(...);
模型
在其模型中定義模型的連接類別:
Laravel 5.0 及更高版本:
class ModelName extends Model { protected $connection = 'pgsql'; }
Laravel 4.0和早期:
class SomeModel extends Eloquent { protected $connection = 'pgsql'; }
交易
可以使用以下語法跨多個連接執行事務:
DB::transaction(function () { DB::connection('mysql')->table('users')->update(['name' => 'John']); DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']); });
結論
Laravel 提供了強大的支持通過DB門面和其他方法處理多個資料庫。這使開發人員能夠滿足需要跨異質資料庫系統進行無縫資料管理的應用程式的需求。
以上是如何在 Laravel 中有效管理多個資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!