Codeigniter 3与dbforge的多个数据库连接

时间:2015-11-03 06:22:09

标签: php mysql codeigniter dbforge

我正在使用CI 3构建一个Web应用程序,我必须使用2个不同的数据库连接来满足某些要求。我已将配置加载到database.php文件中,我当然可以使用内置类连接到它们。

$db['default'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => 'root',
    'database' => 'primary',
    'dbdriver' => 'mysqli'
);

$db['customer'] = array(
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root_1',
    'password' => 'root_1',
    'database' => 'secondary',
    'dbdriver' => 'mysqli'

);

我正在使用here的MY_Model。所以我将它们扩展如下..

class Table extends MY_Model
{


    public function __construct()
    {

        parent::__construct();

        $this->_database = $this->load->database('customer', TRUE);
    }

    public function create_table()
    {
    return $this->_database->query("CREATE TABLE MyGuests (
                      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                      firstname VARCHAR(30) NOT NULL,
                      lastname VARCHAR(30) NOT NULL,
                      email VARCHAR(50),
                      reg_date TIMESTAMP
                    )");

    }

}

但是我需要使用dbForge来创建表。但只有'default'连接与dbForge类一起使用。 Codeigniter dbForge文档没有提供一种方法来加载与dbForge的不同数据库连接。任何人都知道如何以优雅的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

经过一番研究后,我发现了正确的方法。

$this->load->dbForge()实际上可以获取参数,如果我们传递数据库对象,它将使用该连接来执行操作。

此外,我们可以传递第二个参数并获得一个单独的对象。

$this->dbForgeSecondary = $this->load->dbforge($this->_database, TRUE);

简单&很酷。