【问题标题】:cakephp 1.3 datasource change issuecakephp 1.3 数据源更改问题
【发布时间】:2015-02-24 12:07:24
【问题描述】:

我正在使用具有两个数据源的 CakePHP 1.3:

  1. master
  2. default

如何更改整个函数的数据源,即从 default 更改为该函数的 master

如果我用这个

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

它仅针对该模型进行更改。

有什么通用的方法???

【问题讨论】:

  • 什么情况下需要使用master,默认在哪里?
  • 使用任何单个保存/更新操作的函数...我想为该功能使用主数据源(完整功能)..
  • 所以在一个会话中,您需要同时使用两个数据源?基于调用哪个函数?
  • 假设我调用一个控制器/动作 .. 应该就像我们可以在函数开始时更改数据源 .. 它应该使用该数据源直到该函数结束...

标签: php cakephp cakephp-1.3


【解决方案1】:

好的。尝试做这样的事情。我在更新版本的蛋糕中尝试过它并且它有效。

在你的应用模型中有一个函数

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

然后在您的控制器中,根据需要将哪个数据源写入配置中。

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

然后调用您的任何模型。

不要忘记从 bootstrap.php 中指定默认值。

【讨论】:

  • 实际上在 cakephp 1.3 中没有名为 getDataSource 的函数..所以我们不能覆盖..我在库中签入...
  • 其实这里是api.cakephp.org/1.3/class-Model.html#_getDataSource 也许问题出在其他地方,是出错还是没有按预期工作?
  • 从我自己的实验看来,更改配置后需要立即调用getDataSource。
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多