如何选择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";