在一个控制器cakephp 2中连接多个数据库

时间:2015-11-19 05:16:10

标签: cakephp-2.0

你好我是cakephp的新手2.我想知道,如何在一个控制器中连接到数据库并为每个控制器循环。请帮我详细说明。

我已经在数据库配置中设置了以下内容:

class DATABASE_CONFIG {

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'db_one',
    'prefix' => '',
    //'encoding' => 'utf8',
);

public $database2 = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'db_announcement',
    'prefix' => '',
    //'encoding' => 'utf8',
);

2 个答案:

答案 0 :(得分:0)

你应该在google中进行更多的研究,然后再在这里提问。

无论如何,CakePHP采用默认的数据库连接,它位于core.php的核心文件夹中,因此您在数据库中执行的所有查询都是在database.php中默认定义的,如果要连接多个数据库而不是你可以尝试这样的事情。

在您的数据库配置文件中:

public $database2 = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => '*******',
        'database' => '*****',
        'prefix' => '',
        'encoding' => 'utf8',
    );

在您的控制器中,您可以通过这种方式建立连接:

        $db = ConnectionManager::getDataSource('user');
        $list = $db->rawQuery('your query'); or customized CakePHP queries can work here too

我希望你能从中得到答案。

由于                 $ I = 0;                 $总= $列表 - >使用fetchall(PDO :: FETCH_ASSOC);

答案 1 :(得分:0)

而不是getDataSource方法我建议使用$this->ModelName->setDataSource('mongo');

例如,如果要从database.php中提到的'mongo'数据库源的用户模型中获取数据,则设置它看起来像。

  

$这 - >用户 - >的setDataSource( '蒙戈')

在database.php中你有以下代码

public $mongo = array(
        'datasource' => 'Mongodb.MongodbSource',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'root',
        'database' => 'mongo_data',
        'prefix' => '',
        'encoding' => 'utf8',
    );