0

我想更改 codeigniter 迁移的数据库连接。

我的默认数据库是 DB1,但我想更改与 DB2 的连接。

我怎样才能做到这一点?默认编码如下。

defined('BASEPATH') OR exit('No direct script access allowed');

class Migration_Add_blog extends CI_Migration {

public function up()
{
    $this->dbforge->add_field(array(
        'blog_id' => array(
            'type' => 'INT',
            'constraint' => 5,
            'unsigned' => TRUE,
            'auto_increment' => TRUE
        ),
        'blog_title' => array(
            'type' => 'VARCHAR',
            'constraint' => '100',
        ),
        'blog_description' => array(
            'type' => 'TEXT',
            'null' => TRUE,
        ),
    ));

    $this->dbforge->create_table('blog');
}

public function down()
{
    $this->dbforge->drop_table('blog');
}
4

2 回答 2

2

dbforge 库使用与 CI 的其他数据库部分相同的连接。由于只有一个连接,因此您必须更改该连接的数据库。如果你使用的是 MYSQL,你可以用两个use database调用来包围你的代码:

// switch to the second db
$this->db->query('use DB2');

// put DB2 stuff here

// switch back    
$this->db->query('use DB'); 
于 2012-08-20T09:48:48.880 回答
0

您可以使用

$this->load->database();

用于更改 DB-Connection。在 config/database.php 中,您可以定义多个 DB-Connections。例如,要更改为系统数据库,请使用以下命令:

$this->load->database('system');

我将它用于迁移并将命令放在我的 Migrate-Controller 的构造函数中。

class Migrate extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->database('system'); //Use the system-Connection for DB-Manipulation
        $this->load->library('migration');
    }

    /**
     * Migrate to latest or current version
     * @return void
     */
    public function index()
    {
        ...    
于 2016-03-20T09:45:06.053 回答