使用 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() 将数据保存到不同的数据库表的主要内容,如果未能解决你的问题,请参考以下文章
Keras model.save() 和 model.save_weights() 的区别?
tf.saved_model.save(model, path_to_dir) 和 tf.keras.model.save 的区别
在 model.save 或 model.save 中捕获数据库异常!方法?