Легко установить параметры БД динамически. Вот что я использую:
class DatamapperExt extends Datamapper {
public function __construct($id, $db) {
if ($db != null) {
// use these params as default - they don't change much.
$this->db_params = array_merge(array(
'dbdriver' => 'mysql',
'pconnect' => true,
'db_debug' => true,
'cache_on' => false,
'char_set' => 'utf8',
'cachedir' => '',
'dbcollat' => 'utf8_general_ci',
), $db);
parent::__construct($id);
}
}
Использование:
class YourModel extends DatamapperExt {
}
$db = array(
'hostname' => 'database_host',
'username' => 'database_username',
'password' => 'database_password',
'database' => 'database_name',
'prefix' => 'CI table_prefix - if any',
);
$your_model_with_diff_db = new YourModel(NULL, $db);
$model_with_id_diff_db = new YourModel(12, $db);
Вот как я это делаю ... кажется, что вы должны указать db_params в конструкции, чтобы она работала динамически, в противном случае datamapper уходит, пытаясь построить / разрешить отношения и т.д., основываясь на существующих настройках db.
Если ваша база данных установлена, и вам не нужно изменять параметры во время выполнения, вы также можете создать новую запись в config / database.php:
$db['other_database'] = array(
'hostname' => 'database_host',
'username' => 'database_username',
'password' => 'database_password',
'database' => 'database_name',
'prefix' => 'CI table_prefix - if any',
)
(Обратите внимание, что мой стиль кодирования выше отличается от стандартного CI для dbs.)
Затем используйте с:
class YourModel extends DatamapperExt {
var $db_params = 'other_database';
}