konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Muszę zmodyfikować cały skrypt aby obsługiwał export danych do wielu sklepów. Pytanie moje jest następujące - czy można w Zend_Db_Table każdej funkcji pozwolić na wybieranie bazy z którą ma się łączyć?

normalnie robię to tak:

<?php
class Import extends Zend_Db_Table{
protected $_name = 'tabela';
protected $_primary = 'id';

protected function _setupDatabaseAdapter() {
$this->_db = Zend_Registry::get('my_db');
}

function funkcja($zmienna){
//funkcja
}
}
?>


a czy da się coś takiego?

<?php
class Import extends Zend_Db_Table{
protected $_name = 'tabela';
protected $_primary = 'id';

function funkcja($zmienna){
if($zmienna == 1){
$this->_db = Zend_Registry::get('moja_db');
}else{
$this->_db = Zend_Registry::get('inna_db');
}
}
}
?>

konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Hej,

może to coś ci podpowie http://hi.baidu.com/freerr/blog/item/625dd7586e63c4dd9...

Pozdrawiam

konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Możesz skorzystać z zasobu multidb - http://blog.wilgucki.pl/2010/04/korzystanie-z-kilku-ba...

Sposobów na użycie tego zasobu jest kilka. We wpisie znajdziesz jeden, w komentarzach drugi. Jakby się zastanowić znalazłoby się jeszcze kilka.

konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Czyli byłem blisko tylko trzeba było funkcję ustawić jako publiczna.

konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Maciej Wilgucki:
Możesz skorzystać z zasobu multidb - http://blog.wilgucki.pl/2010/04/korzystanie-z-kilku-ba...

Sposobów na użycie tego zasobu jest kilka. We wpisie znajdziesz jeden, w komentarzach drugi. Jakby się zastanowić znalazłoby się jeszcze kilka.

W sumie działa rozwiązanie, więc można by było używać, zastanawia mnie tylko taka rzecz: baza - jest warstwą modelu, kontroller - łączy widok z modelem, MVC zakłada że każdy element może być wymienny (widok, kontorller, model). Pytanie: Czy na pewno kontroller powinien decydować o wyborze bazy?

Pytanie dotyczy sposobu opisanego w artykule.Yuriy Kisil edytował(a) ten post dnia 22.09.10 o godzinie 21:26
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: Zend_Db_Table i wiele baz MySQL

Yuriy Kisil:
Maciej Wilgucki:
Możesz skorzystać z zasobu multidb - http://blog.wilgucki.pl/2010/04/korzystanie-z-kilku-ba...

Sposobów na użycie tego zasobu jest kilka. We wpisie znajdziesz jeden, w komentarzach drugi. Jakby się zastanowić znalazłoby się jeszcze kilka.

W sumie działa rozwiązanie, więc można by było używać, zastanawia mnie tylko taka rzecz: baza - jest warstwą modelu, kontroller - łączy widok z modelem, MVC zakłada że każdy element może być wymienny (widok, kontorller, model). Pytanie: Czy na pewno kontroller powinien decydować o wyborze bazy?

Pytanie dotyczy sposobu opisanego w artykule.Yuriy Kisil edytował(a) ten post dnia 22.09.10 o godzinie 21:26


Też mi się to rzuciło w oczy, chociaż myślę, że Maciek umieścił wybór połączenia w kontrolerze tylko dla przykładu. Wg mnie najlepszym miejscem jest model czy też encja, która jest silnie powiązana z odpowiednią tabelką w odpowiedniej bazie - dlatego nie ma sensu dawać możliwości zmiany takich parametrów w łatwy sposób.

Myślę, że dobrym rozwiązaniem jest to z przykładu poniżej, gdzie mamy zdefiniowany adapter na sztywno.

class Orders extends App_Db_Table_Abstract {

protected $_name = 'groups';
protected $_primary = 'group_id';
protected $_use_adapter = 'order_system';

}

konto usunięte

Temat: Zend_Db_Table i wiele baz MySQL

Artur Świerc:
Też mi się to rzuciło w oczy, chociaż myślę, że Maciek umieścił wybór połączenia w kontrolerze tylko dla przykładu.

Dokładnie. Umieściłem to w kontrolerze jako przykład najprostszej możliwej implementacji, by nie zaciemniać obrazu dodatkowymi klasami, ustawieniami, itp. Bardziej życiowe podejście zostało opisane w komentarzach pod wpisem.

Z drugiej jednak strony, jeśli tylko w jednym miejscu musimy zmieniać bazę, nie ma sensu tego zakopywać głęboko w klasach.

Następna dyskusja:

Zend DB - wykorzystanie wie...




Wyślij zaproszenie do