cakephp 1.3 проблем с промяна на източника на данни

Използвам CakePHP 1.3 с два източника на данни:

  1. master
  2. default

Как мога да променя източника на данни за цяла функция, т.е. от default на master за тази функция.

Ако използвам това

$this->{Model}->setDataSource('master');

променя се само за този модел.

Има ли някакъв общ начин???


person Bhupendra Pandey    schedule 24.02.2015    source източник
comment
в кои случаи трябва да използвате master и къде по подразбиране?   -  person Arman Petrosyan    schedule 24.02.2015
comment
функция, която използва всяка отделна операция за запазване/актуализиране ... искам да използвам източник на основни данни за тази функционалност (за пълна функция)..   -  person Bhupendra Pandey    schedule 24.02.2015
comment
Така че в една сесия ще трябва да използвате и двата източника на данни? Въз основа на коя функция е извикана?   -  person Arman Petrosyan    schedule 24.02.2015
comment
да предположим, че извиквам един контролер/действие ..трябва да е така, че можем да променим източника на данни при стартиране на функцията ..и той трябва да използва този източник на данни до края на тази функция...   -  person Bhupendra Pandey    schedule 24.02.2015


Отговори (1)


ДОБРЕ. Опитайте да направите нещо подобно. Опитах го в по-нова версия на тортата и се получи.

във вашия модел на приложение има функция

public function getDataSource(){
    $dataSource = Configure::read('currentDataSource');
    if($dataSource && $dataSource !== $this->useDbConfig){
        $this->setDataSource($dataSource);
    }
    return parent::getDataSource();
}

След това във вашия контролер, въз основа на кой източник на данни е необходим, го запишете в configure.

Configure::write('currentDataSource', 'yourDbsource');

След това се обадете на някой от вашите модели.

Не забравяйте да посочите този по подразбиране от bootstrap.php.

person Arman Petrosyan    schedule 24.02.2015
comment
всъщност в cakephp 1.3 няма функция, наречена getDataSource..така че не можем да отменим....проверих в библиотеката... - person Bhupendra Pandey; 24.02.2015
comment
Всъщност ето го api.cakephp.org/1.3/class-Model.html# _getDataSource Може би проблемът е някъде в друга точка, дава ли грешка или просто не работи според очакванията? - person Arman Petrosyan; 25.02.2015
comment
От моите собствени експерименти изглежда, че трябва да извикате getDataSource веднага след промяна на конфигурацията. - person Amy Anuszewski; 29.10.2018