Kohana应用程序和模块中的不同数据库实例

时间:2013-09-19 13:55:31

标签: kohana

我需要使用Wordpress对我的应用程序进行集成。我有一个模块。但我需要使用不同的数据库实例。在我的应用程序中,我使用'default',在Wordpress模块​​中,我想使用'wordpress'数据库实例。我怎样才能做到这一点?因为modules \ wordpress \ init.php中的Database :: $ default ='wordpress'设置了Module和App的实例。

1 个答案:

答案 0 :(得分:0)

如果您在配置文件中定义了两个数据库连接,请执行以下操作:

config/database.php (可以在APPPATHMODPATH等。

return array
(
    'default' => array
    (
        'type'       => 'mysql',
        'connection' => array(
            'hostname'   => 'localhost',
            'username'   => 'dbuser',
            'password'   => 'mypassword',
            'persistent' => FALSE,
            'database'   => 'my_db_name',
        ),
        'table_prefix' => '',
        'charset'      => 'utf8',
    ),
    'wordpress' => array(
        'type'       => 'mysql',
        'connection' => array(
            'hostname'   => 'localhost',
            'username'   => 'other_user',
            'password'   => 'mypassword',
            'persistent' => FALSE,
            'database'   => 'wordpress',
        ),
        'table_prefix' => '',
        'charset'      => 'utf8',
    ),
);

那么你可以像这样引用它们:

// This would connect to the database defined as 'default'
$default = Database::instance();

// This would connect to the database defined as 'wordpress'
$remote  = Database::instance('wordpress');

如果您使用的是ORM模块,那么在使用WordPress数据库的每个Model中都会这样做:

protected String $_db_group = 'wordpress';

(或者,您可以创建一个抽象类......

abstract class Model_WordPress extends ORM
{
    protected String $_db_group = 'wordpress';
}

...然后让您的WordPress Model扩展Model_WordPress而不是直接来自ORM。例如,class Model_WordPress_Post extends Model_WordPress ...。)