Codeigniter – лучший способ использовать две разные базы данных

Кто-нибудь знает, как лучше использовать две разные базы данных в моем приложении?

Мне нужно хранить данные в обеих базах данных, которые по-разному расположены (хост, имя пользователя, пароль, все меняется).

Я планирую создавать модели, как обычно, и в конструкции устанавливают хост, имя, пропуск и т. Д.

Я не уверен, что вы называете этот «лучший» способ, но способ, как описано в учебнике, заключается в том,

в файле базы данных вы имеете конфигурацию по умолчанию, часть которой:

$db['default']['hostname'] = "localhost"; $db['default']['username'] = "user"; $db['default']['password'] = "database"; $db['default']['database'] = "db1"; 

теперь вы можете создать другую группу, скажем, мы называем ее group1, и мы хотим, чтобы она имела все то же самое, что и настройки базы данных по умолчанию, кроме имени, поэтому вы можете сделать

 $db['group1']=$db['default']; $db['group1']['database']="db2"; по $db['group1']=$db['default']; $db['group1']['database']="db2"; 

то, когда вы хотите использовать вторую базу данных, просто

 $DB2 = $this->load->database('group1', TRUE); 

а затем вместо $this->db->foo() вы будете делать $DB2->foo()

альтернативно (как предложено в комментариях sbaaaang), вы можете сделать $this->db=$DB2; держать все одинаково

и вы можете распространить это на несколько групп, подобных этому

  $DB1 = $this->load->database('group1', TRUE); $DB2 = $this->load->database('group2', TRUE); ... $DBn = $this->load->database('groupn', TRUE); 

Ну, я бы хотел просто написать здесь мое решение, потому что я использовал меньше кода, я думаю:

в database.php я устанавливаю группы базы данных так для ex:

 $database['default']['dbname'] = 'db1'; $database['second_db']['dbname'] = 'db2'; 

то в моделях я использовал конструктор для переключения в базу данных, которую хочу использовать следующим образом:

 //use db1 function __construct() { // Call the Model constructor parent::__construct(); $this->load->database('default',true); } //use db2 function __construct() { // Call the Model constructor parent::__construct(); $this->load->database('second_db',true); } по //use db1 function __construct() { // Call the Model constructor parent::__construct(); $this->load->database('default',true); } //use db2 function __construct() { // Call the Model constructor parent::__construct(); $this->load->database('second_db',true); } 

если кто-то хотел бы показать больше решений, сделайте это, пожалуйста! Это всего лишь мои два цента.

Я читал, что

 $db['default']['pconnect'] = FALSE; 

должно быть ложным, чтобы эти вещи работали. Пожалуйста, поправьте меня, если я ошибаюсь. Для ВСЕХ нескольких баз данных, которые вы используете, он должен быть выключен. Я не знаю, является ли это хорошим решением.

Пробовал это, и он работает:

 $db['otherdb'] = array_merge($db['primarydb'], array( 'database' => 'otherdbname' ));