当前位置:K88软件开发文章中心网站服务器框架Yii 2.0 → 文章内容

数据库访问(Data Access Objects): 数据库连接、基本查询、事务和模式操作

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 15:28:57

0s. 如果在10s内不能连接,则被认为该服务器已经挂掉.你也可以自定义超时参数.你也可以配置多主多从的结构,例如:[ 'class' => 'yii\db\Connection', // 配置主服务器 'masterConfig' => [ 'username' => 'master', 'password' => '', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], // 配置主服务器组 'masters' => [ ['dsn' => 'dsn for master server 1'], ['dsn' => 'dsn for master server 2'], ], // 配置从服务器 'slaveConfig' => [ 'username' => 'slave', 'password' => '', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], // 配置从服务器组 'slaves' => [ ['dsn' => 'dsn for slave server 1'], ['dsn' => 'dsn for slave server 2'], ['dsn' => 'dsn for slave server 3'], ['dsn' => 'dsn for slave server 4'], ],]上述配置制定了2个主服务器和4个从服务器.Connection组件也支持主服务器的负载均衡和故障转移,与从服务器不同的是,如果所有主服务器都不可用,则会抛出异常.注意:当你使用yii\db\Connection::masters来配置一个或多个主服务器时,Connection中关于数据库连接的其他属性(例如:dsn,username,?password)都会被忽略.事务默认使用主服务器的连接,并且在事务执行中的所有操作都会使用主服务器的连接,例如:// 在主服务器连接上开始事务$transaction = $db->beginTransaction();try { // 所有的查询都在主服务器上执行 $rows = $db->createCommand('SELECT * FROM user LIMIT 10')->queryAll(); $db->createCommand("UPDATE user SET username='demo' WHERE id=1")->execute(); $transaction->commit();} catch(\Exception $e) { $transaction->rollBack(); throw $e;}如果你想在从服务器上执行事务操作则必须要明确地指定,比如:$transaction = $db->slave->beginTransaction();有时你想强制使用主服务器来执行读查询,你可以调用seMaster()方法.$rows = $db->useMaster(function ($db) { return $db->createCommand('SELECT * FROM user LIMIT 10')->queryAll();});你也可以设置$db->enableSlaves?为false来使所有查询都在主服务器上执行.操作数据库模式获得模式信息你可以通过 yii\db\Schema实例来获取Schema信息:$schema = $connection->getSchema();该实例包括一系列方法来检索数据库多方面的信息:$tables = $schema->getTableNames();更多信息请参考yii\db\Schema修改模式除了基础的 SQL 查询,yii\db\Command还包括一系列方法来修改数据库模式:创建/重命名/删除/清空表增加/重命名/删除/修改字段增加/删除主键增加/删除外键创建/删除索引使用示例:// 创建表$connection->createCommand()->createTable('post', [ 'id' => 'pk', 'title' => 'string', 'text' => 'text',]);完整参考请查看yii\db\Command.

上一页  [1] [2] [3] 


数据库访问(Data Access Objects): 数据库连接、基本查询、事务和模式操作