Yii多个数据库连接

Nik*_*vic 6 php mysql yii

我有三个数据库,每个数据库都有相同的字段相同的表,但我不知道如何在Yii中同时从所有三个数据库中获取所有记录.

请帮忙

Nan*_*mar 11

1.我们将从配置数据库连接开始.打开protected/config/main.php并按照指南中的说明定义主连接:

'db'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=db1',
        'emulatePrepare' => true,
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ),
Run Code Online (Sandbox Code Playgroud)

2.然后复制它,将'db'组件重命名为'db2'并相应地更改连接字符串.此外,您需要添加类名,如下所示:

'db2'=>array(
    'class'=>'CDbConnection',
    'connectionString' => 'mysql:host=localhost;dbname=db2',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
),
Run Code Online (Sandbox Code Playgroud)

3.然后复制它,将'db'组件重命名为'db3'并相应地更改连接字符串.此外,您需要添加类名,如下所示:

'db2'=>array(
    'class'=>'CDbConnection',
    'connectionString' => 'mysql:host=localhost;dbname=db2',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
),
Run Code Online (Sandbox Code Playgroud)

那就是它.现在,您有两个数据库连接,可以将它们与DAO和查询构建器一起使用,如下所示:

$db1Rows = Yii::app()->db->createCommand($sql)->queryAll();
$db2Rows = Yii::app()->db2->createCommand($sql)->queryAll();
$db3Rows = Yii::app()->db2->createCommand($sql)->queryAll();
Run Code Online (Sandbox Code Playgroud)


Abu*_*yah 6

只需添加新的数据库连接到config/main.php

    'db1'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=database1',
        'emulatePrepare' => true,
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ),

    'db2'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=database2',
        'username' => 'root',
        'password' => '',
        'class'=>'CDbConnection',          // DO NOT FORGET THIS!
    ),
Run Code Online (Sandbox Code Playgroud)

现在您可以像这样连接到您的数据库:

Yii::app()->db1 ...
Yii::app()->db2 ...
Run Code Online (Sandbox Code Playgroud)

查看这篇文章以获得更多解释:

http://www.yiiframework.com/wiki/123/multiple-database-support-in-yii/

还有这个:

http://www.yiiframework.com/wiki/78/multiple-databases-and-multiple-domains/