使用 Cakephp model::save() 将数据保存到不同的数据库表

Posted

技术标签:

【中文标题】使用 Cakephp model::save() 将数据保存到不同的数据库表【英文标题】:Saving data to a different database table using 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数据库中的另一个“表”? 我需要将数据保存到另一个数据库,两个数据库中的表具有相同的名称和相似的字段,除了一些特定于数据库的附加字段。 【参考方案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. ));

【讨论】:

以上是关于使用 Cakephp model::save() 将数据保存到不同的数据库表的主要内容,如果未能解决你的问题,请参考以下文章

无法使用“model.save()”保存自定义模型

Keras model.save() 和 model.save_weights() 的区别?

tf.saved_model.save(model, path_to_dir) 和 tf.keras.model.save 的区别

在 model.save 或 model.save 中捕获数据库异常!方法?

无法使用 mongoose Model.save() 保存 - 给出内部服务器错误

.save() 和使用 update() 之间的猫鼬区别