CodeIgniter に DMZ DataMapper ORM を使用しています。
複数のデータベースに接続するように構成することは可能だと思います。私はまだドキュメントを見つけていません。誰もこれを以前にやったことがありますか?
CodeIgniter に DMZ DataMapper ORM を使用しています。
複数のデータベースに接続するように構成することは可能だと思います。私はまだドキュメントを見つけていません。誰もこれを以前にやったことがありますか?
あなたのアイデアインディをありがとう。
application / config/database.phpにあります
$db['other_database'] = array(
'hostname' => 'your_host_name',
'username' => 'your_user_name',
'password' => 'your_paasword',
'database' => 'other_database_name',
'prefix' => '',
'dbdriver' => 'mysql',
'pconnect' => true,
'db_debug' => true,
'cache_on' => false,
'char_set' => 'utf8',
'cachedir' => '',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => FALSE,
'stricton' => FALSE,
);
class Your_new_class extends Datamapper {
public $db_params = 'other_database';
}
dbパラメータを動的に設定するのは簡単です。これは私が使用するものです:
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設定に基づいて関係などを構成/解決しようとします。
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',
)
(上記の私のコーディングスタイルは、dbsの標準CIとは異なることに注意してください。)
次に、以下で使用します。
class YourModel extends DatamapperExt {
var $db_params = 'other_database';
}
解決策は簡単です:
database.php で別のデータベース構成を作成し、追加します
var $db_params = 'name_of_other_database';
モデルに。