怎样实现yii2数据库读写分离配置

开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的." Web 应用是 config/),DSN( Data Source Name )是数据源名称,用于指定数据库信息.如下所示:

怎样实现yii2数据库读写分离配置

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