当前位置: 首页 > 工具软件 > ActiveRecord > 使用案例 >

yii ActiveRecord

夏志国
2023-12-01

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

直接实例化 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'],
            ],
        ],
 类似资料:

相关阅读

相关文章

相关问答