Добрый день вот столкнулся с такой задачей:
Что мы имеем:
1) 5 Грубо говоря интернет магазинов (3 из которых на Opencart 1.5.6)
2) И задача собирать некую информацию со всех в одну БД (скажем так своя мини CRM)
Я решил ничего не мудрить и просто научить Opencart работать с 2 базами данных
Решилось довольно просто
1) Вносим параметры подключения к БД в конце файла config.php я решил cделать с расчетом на то что в будущем прийдется подключатся к еще нескольки БД поэтому создал масив с подключениями
$ArrayDB = array(); // Масив с подлючениями
$arrayDB[] = array( // Добавляем подключения в масив
'DB_KEY' => 'db_crm', // Ключ для метода $this->[DB_KEY]->query();
'DB_DRIVER' => 'mysql',
'DB_HOSTNAME' => 'localhost',
'DB_USERNAME' => 'root',
'DB_PASSWORD' => '',
'DB_DATABASE' => 'CRM',
'DB_PREFIX' => ''
);
2) Открываем index.php и ищем
// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
После него добавляем эти строчки
foreach($arrayDB as $db_add){
${$db_add['DB_KEY']} = new DB($db_add['DB_DRIVER'],$db_add['DB_HOSTNAME'],$db_add['DB_USERNAME'],$db_add['DB_PASSWORD'],$db_add['DB_DATABASE']);
$registry->set($db_add['DB_KEY'],${$db_add['DB_KEY']});
}
Все теперь в наших моделях можно спокойно работать с второй базой используя такую конструкци
$result = $this->[DB_KEY]->query('SELECT * FROM `table` ');
$result = $this->db_crm->query('SELECT * FROM `table` ');
// Насчет префикса тут есть нюанс я его не использую в дополнительных БД поэтому сюда не включал но есле будет нужно спокойно можно добавить