0

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

4

1 回答 1

0

如果您在配置文件中定义了两个数据库连接,如下所示:

config/database.php(可以在APPPATH,MODPATH等中)

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模块,则在Model使用 WordPress 数据库的每个模块中都这样做:

protected String $_db_group = 'wordpress';

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

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

...然后让您的 WordPressModel扩展Model_WordPress而不是直接从ORM. 例如,class Model_WordPress_Post extends Model_WordPress ...。)

于 2013-12-26T05:51:15.003 回答