Kohana 3.3 Database :: instance('name')不起作用

时间:2014-08-25 20:32:17

标签: php kohana kohana-3.3

我对Kohana 3.3存在问题,并使用不同的数据库配置。 我有一个config / database.php,其中包含'默认'配置和其他'像这样:


return array
(
'default' => array
(
    'type'       => 'MySQL',
    'connection' => array(
        'hostname'   => 'localhost',
        'database'   => 'database-one',
        'username'   => 'root',
        'password'   => 'password',
        'persistent' =>  FALSE,
    ),
    'table_prefix' => '',
    'charset'      => 'utf8',
    'caching'      => FALSE,
),

'other' => array  
(
    'type'       => 'MySQL',
    'connection' => array(
        'hostname'   => 'localhost',
        'database'   => 'database-two',
        'username'   => 'root',
        'password'   => 'password',
        'persistent' =>  FALSE,
    ),
    'table_prefix' => '',
    'charset'      => 'utf8',
    'caching'      => FALSE,
));

但在尝试使用时在控制器或模型中:

 Database::instance('other'); 

Kohana仍将使用'默认'组态。我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想通过kohana更改当前使用的连接,请尝试:

Database::$default = 'other';

从这一行开始,您的代码将使用“其他”连接,直到您将使用相同的方式将其再次切换为“默认”。

在以简单方式执行查询时,您还可以使用一次其他数据库配置:

DB::...->execute('other');

或者如果您之前存储数据库实例:

$other = Database::instance('other');
DB::...->execute($other);

通过...我的意思是你的查询。

答案 1 :(得分:0)

您需要将连接存储在变量中,否则将使用default连接。

Documentation