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
в каких случаях вам нужно использовать мастер и где по умолчанию?   -  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