怎樣實現yii2資料庫讀寫分離配置
開始使用資料庫首先需要配置資料庫連線元件,通過新增 db 元件到應用配置實現("基礎的." Web 應用是 config/),DSN( Data Source Name )是資料來源名稱,用於指定資料庫資訊.如下所示:
return [
// ...
components => [
// ...
db => [
class => yiidbConnection,
dsn => mysql:host=localhost;dbname=mydatabase, // MySQL, MariaDB
//dsn => sqlite:/path/to/database/file, // SQLite
//dsn => pgsql:host=localhost;port=5432;dbname=mydatabase, // PostgreSQL
//dsn => cubrid:dbname=demodb;host=localhost;port=33000, // CUBRID
//dsn => sqlsrv:Server=localhost;Database=mydatabase, // MS SQL Server, sqlsrv driver
//dsn => dblib:host=localhost;dbname=mydatabase, // MS SQL Server, dblib driver
//dsn => mssql:host=localhost;dbname=mydatabase, // MS SQL Server, mssql driver
//dsn => oci:dbname=//localhost:1521/mydatabase, // Oracle
username => root, //資料庫使用者名稱
password => , //資料庫密碼
charset => utf8,
],
],
// ...
];
請參考PHP manual獲取更多有關 DSN 格式資訊。 配置連線元件後可以使用以下語法訪問:
$connection = Yii::$app->db;
請參考[[yiidbConnection]]獲取可配置的屬性列表。 如果你想通過ODBC連線資料庫,則需要配置[[yiidbConnection::driverName]] 屬性,例如:
db => [
class => yiidbConnection,
driverName => mysql,
dsn => odbc:Driver={MySQL};Server=localhost;Database=test,
username => root,
password => ,
],
注意:如果需要同時使用多個數據庫可以定義 多個 連線元件:
return [
// ...
components => [
// ...
db => [
class => yiidbConnection,
dsn => mysql:host=localhost;dbname=mydatabase,
username => root,
password => ,
charset => utf8,
],
secondDb => [
class => yiidbConnection,
dsn => sqlite:/path/to/database/file,
],
],
// ...
];
在程式碼中通過以下方式使用:
$primaryConnection = Yii::$app->db;
$secondaryConnection = Yii::$app->secondDb;
如果不想定義資料庫連線為全域性應用元件,可以在程式碼中直接初始化使用:
$connection = new yiidbConnection([
dsn => $dsn,
username => $username,
password => $pa