Я считаю, что вставка / обновление / удаление должны работать нормально, т. Е .:
My_Model_DbTable_MyTable.php:
function myFunction() {
$this->insert()
$this->update()
$this->delete()
}
Однако, если вы хотите использовать вторичную базу данных, вы не сможете использовать типичный метод $ this-> select ():
My_Model_DbTable_MyTable.php
// Override getAdapter() function to be able to obtain secondary database
function getAdapter($name = 'primary') {
$resource = $this->getPluginResource('multidb');
$resource->init();
// Ensure only primary and secondary are allowed
if ($name == 'secondary' || $name == 'primary') {
return $resource->getDb($name);
} else {
return $this->_db;
}
}
function selectFromSecondary() {
$db = $this->getAdapter('secondary');
$select = $this->select(true);
return $db->fetchAll($select); // normally this is $this->fetchAll()
}
Опять же, переопределив getAdapter (), как показано выше, вам не нужно будет вносить какие-либо изменения при доступе к первичной базе данных, но если вам нужна вторичная, вам необходимо получить вторичный адаптер через $ this-> getAdapter («вторичный») и сохраните его в переменной, то есть в $ db, а затем вызовите методы select / insert / update / delete с помощью объекта $ db.
РЕДАКТИРОВАТЬ Небольшое изменение кода выше. Вы должны попытаться использовать $ this -> _ db по умолчанию для getAdapter (), а $ db-> заменяет $ this-> для fetch (), update (), insert (), delete () и т. Д., А не для select ( ).