配置文件可以说是一个项目最基础的部分,我们所用到的数据库配置,redis配置,都会全部放到一个配置文件中方便我们管理,Yii2中的配置的设置可以说更丰富,下面是高级模版 /common/config/main-local.php文件的代码,这个就是咱们的配置文件。
return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=feifeixueyuan', 'username' => 'root', 'password' => 'wwsdfsdsd', 'charset' => 'utf8', ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => true, ], ], ];
我们先看一下如何连接数据库,Yii帮我们建立了一个在PHP的PDO之上的数据访问层(DAO),DAO为不同的数据库提供了统一的API接口,比如ActiveRecord就是数据库与模型model的交互,QueryBuilder用于创建动态的查询语句。
在mysql中,我们想访问数据库,我们需要创建一个yii\db\Connection 实例来与之建立连接。
$db = new yii\db\Connection([ 'dsn' => 'mysql:host=localhost;dbname=example', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ]);
由于数据库需要在多个地方使用,这样会很不方便,一个常用的做法是将配置放在应用组件中
return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost; dbname=example', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ], ], ];
之后通过Yii::$app->db就可以访问数据库了,看到这在回过头来看看一开始的配置文件代码是不是就很明白啦。我们若是要发邮件就会用到Mailer类,我们只需要在配置应用(components)中定义相应的类和一些常用的配置就很容易使用啦。
主从配置
我们在components应用的db中加入下面的设置即可使我们的数据库配置变为主从配置。
'slaveConfig' => [ //从库的通用配置 'username' => '', 'password' => '', 'attributes' => [ PDO::ATTR_TIMEOUT => 10, //超时时间 ], ], //从库的配置列表 'slaves' => [ ['dsn' => 'dns for slave server 1'], ['dsn' => 'dns for slave server 2'], ]
当我们通过调用 yii\db\Command::execute() 来执行的语句都被视为写操作,通过调用 yii\db\Command 中任一 “query” 方法来执行的语句都被视为读操作,还可以通过Yii::$app->db->slave来获取当前有效的从库。