yii ActiveRecord

连接到一个数据库有两种方法

直接实例化 yii\db\Connection类;

$db = new yii\db\Connection([
    'dsn' => 'mysql:host=localhost;dbname=example',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
]); 

或者以组件方式调用 \YII:: app>db;\YII:: a p p − > d b ; 调 用 其 他 数 据 库 连 接 \YII :: app->db2;
在配置文件中

return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=192.168.43.200;dbname=shop',
            'username' => '***',
            'password' => '***',
            'charset' => 'utf8',
        ],
        'db2' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=192.168.43.201;dbname=shop',
            'username' => '***',
            'password' => '***',
            'charset' => 'utf8',
        ],
]

调用 Yii::$app->db->createCommand('SELECT * FROM post')->queryAll(); 来直接获取数据

使用表前缀

配置表前缀:

return [
    // ...
    'components' => [
        // ...
        'db' => [
            // ...
            'tablePrefix' => 'tbl_',
        ],
    ],
];

查询中使用表前缀 Yii::$app->db->createCommand("SELECT COUNT([[id]]) FROM {{%employee}}")->queryScalar()

开启transaction事物

$db = Yii::$app->db;
$transaction = $db->beginTransaction();

try {
    $db->createCommand($sql1)->execute();
    $db->createCommand($sql2)->execute();
    // ... executing other SQL statements ...

    $transaction->commit();

} catch(\Exception $e) {

    $transaction->rollBack();

    throw $e;
}

主从配置

'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=192.168.43.200;dbname=shop',
            'username' => '***',
            'password' => '***',
            'charset' => 'utf8',
            // 从库的通用配置
            'slaveConfig' => [
                'username' => '***',
                'password' => '***',
                'attributes' => [
                    // 使用一个更小的连接超时
                    PDO::ATTR_TIMEOUT => 10,
                ],
            ],
            'slaves' => [
                ['dsn' => 'mysql:host=192.168.43.201;dbname=shop'],
                ['dsn' => 'mysql:host=192.168.43.202;dbname=shop'],
            ],
        ],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值