【问题标题】:Saving data to a different database table using Cakephp model::save()使用 Cakephp model::save() 将数据保存到不同的数据库表
【发布时间】:2014-06-09 20:14:34
【问题描述】:

我是 cakephp 的新手,真的可以使用一些帮助和建议!

我正在使用的应用程序当前与两个数据库进行交互,两个数据库或多或少具有相似的架构和表结构,我必须在两个数据库中保存一些信息,所以我在两个数据库中都有这个表说“employee_information” ,这两个表都有一组公共字段(名字、姓氏、生日、性别等)和特定于该数据库的一些其他字段。 现在我必须使用 cakephp model::save() 方法将一些信息保存到另一个数据库中,以前我通常会切换数据源并会使用 sql INSERT 来执行此操作,它工作正常,但现在我真的很想使用 cakephp执行此操作的传统方法,原因是我认为不使用蛋糕自己的方法(在我的情况下进行数据清理)我错过了很多 我曾尝试切换数据源并使用model::save(),该方法不起作用,虽然它没有记录任何错误,但也没有将任何记录添加到数据库中。

//在模型中使用下面的sn-p来保存。

$this->setDataSource('secondary_database');
$this->save($this->data);
$this->setDataSource('primary_database');

任何想法或建议将不胜感激!

谢谢!

【问题讨论】:

  • $this->useTable = 'secondary_table';book.cakephp.org/2.0/en/models/model-attributes.html#usetable。 PS:你问的是“不同的数据库表”,是要使用另一个“数据库”,还是SAME数据库中的另一个“表”?
  • 我需要将数据保存到另一个数据库,两个数据库中的表具有相同的名称和相似的字段,除了一些特定于数据库的附加字段。

标签: cakephp


【解决方案1】:

您快到了,但您需要设置两个数据库配置并使用useDbConfig 选择它们

例如:

$this->User->save($this->data); //Saves data to default (first) database
$this->User->useDbConfig('second'); //Selects second database for next uses
$this->User->save($this->data); //Saves data to second database too

//$this->User->useDbConfig('default'); //Not needed unless you want to do staff with the default database again later in the same code.

但如果我需要在每个数据库中保存不同的字段,那么我会使用不同的模型。

【讨论】:

    【解决方案2】:

    切换数据源后为控制器设置自定义表对我有用。 (http://api.cakephp.org/1.3/class-Model.html#_setSource)

    $this->User->setDataSource('secondary_database');
    $this->User->setSource('secondary_database_table');
    $this->User->save($this->data,array( 'validate' => true, 'fieldList' => $fieldList // specific fields that needs to be updated. ));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      相关资源
      最近更新 更多