首页 > 开发 > PHP > 正文

yii2 数据库读写分离配置示例

2024-05-04 22:49:25
字体:
来源:转载
供稿:网友

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

return [  // ...  'components' => [    // ...    'db' => [      'class' => 'yii/db/Connection',      '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;

请参考[[yii/db/Connection]]获取可配置的属性列表。 如果你想通过ODBC连接数据库,则需要配置[[yii/db/Connection::driverName]] 属性,例如:

'db' => [  'class' => 'yii/db/Connection',  'driverName' => 'mysql',  'dsn' => 'odbc:Driver={MySQL};Server=localhost;Database=test',  'username' => 'root',  'password' => '',],

注意:如果需要同时使用多个数据库可以定义 多个 连接组件:

return [  // ...  'components' => [    // ...    'db' => [      'class' => 'yii/db/Connection',      'dsn' => 'mysql:host=localhost;dbname=mydatabase',       'username' => 'root',      'password' => '',      'charset' => 'utf8',    ],    'secondDb' => [      'class' => 'yii/db/Connection',      'dsn' => 'sqlite:/path/to/database/file',     ],  ],  // ...];

在代码中通过以下方式使用:

$primaryConnection = /Yii::$app->db;$secondaryConnection = /Yii::$app->secondDb;

如果不想定义数据库连接为全局应用组件,可以在代码中直接初始化使用:

$connection = new /yii/db/Connection([  'dsn' => $dsn,   'username' => $username,   'password' => $password,]);$connection->open();

小提示:如果在创建了连接后需要执行额外的 SQL 查询,可以添加以下代码到应用配置文件:

return [  // ...  'components' => [    // ...    'db' => [      'class' => 'yii/db/Connection',      // ...      'on afterOpen' => function($event) {        $event->sender->createCommand("SET time_zone = 'UTC'")->execute();      }    ],  ],  // ...];            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表