ORM的Kohana数据库配置设置


Kohana database config settings for ORM

如何选择ORM应该使用的数据库配置?文档只提到如何在使用纯数据库方法时设置配置和选择它。

这是我当前的配置:

控制器

<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Welcome extends Controller {
    public function action_index()
    {
        $members = ORM::factory('user');
        $members->where('first_name', '=', 'Peter')->find_all();
        $memCount = $members->count_all();          
        $this->response->body('Count: ' . $memCount);
    }
} // End Welcome

<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_User extends ORM
{   
    protected $_primary_key = 'UserId';
}

Config(位于application/Config/database.php

)
<?php defined('SYSPATH') or die('No direct access allowed.');
return array
(
    'local' => array
    (
        'type'       => 'mysql',
        'connection' => array(
            'hostname'   => 'localhost',
            'database'   => 'dbname',
            'username'   => 'username',
            'password'   => '*******',
            'persistent' => FALSE,
        ),
        'table_prefix' => '',
        'charset'      => 'utf8',
        'caching'      => FALSE,
        'profiling'    => TRUE,
    ),
    'remote' => array(
        'type'       => 'pdo',
        'connection' => array(
            'dsn'        => 'mysql:host=localhost;dbname=kohana',
            'username'   => 'root',
            'password'   => '***',
            'persistent' => FALSE,
        ),
        'table_prefix' => '',
        'charset'      => 'utf8',
        'caching'      => FALSE,
        'profiling'    => TRUE,
    ),
);

我只想让ORM使用local数据库。我该怎么做呢?现在我得到错误:Database_Exception [ 2 ]: mysql_connect(): Access denied for user 'www-data'@'localhost' (using password: NO)

如Kowser所说,对于Database::instance()返回使用'local'数据库组的连接,请使用Database::$default = 'local';

如果你想让一个类使用非database::$default的特定数据库组。然后在类定义中将$_db_group设置为数据库配置组,如下所示:

<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_User extends ORM
{
    protected $_db_group = 'local';
    protected $_primary_key = 'UserId';
}

这样你就可以将Database::$default设置为'remote',并且只有这个类的对象才会使用'local'连接

您可能知道,Kohana默认使用default。如果在默认情况下需要不同的内容,请将这一行添加到bootstrap.php:

Database::$default = "local";