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

时间:2014-06-09 20:14:35

标签: cakephp

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

我正在使用的应用程序当前与两个数据库交互,两个数据库都或多或少有类似的架构和表结构,我必须在两个数据库中保存一些信息,所以我有这个表说" employee_information&# 34;在两个数据库中,两个表都有一组公共字段(first_name,last_name,birthday,gender等)以及特定于该数据库的一些其他字段。 现在我必须使用cakephp model :: save()方法将一些信息保存到其他数据库中,以前我通常是切换数据源并使用sql INSERT来做这个并且它工作正常,但现在我真的想要使用cakephp这样做的常规方法,原因是我认为我没有使用蛋糕自己的方法(在我的情况下数据消毒)中错过了很多 我曾尝试切换数据源并使用model :: save(),但该方法不起作用,虽然它没有记录任何错误,但也没有将任何记录添加到数据库中。

//在模型中使用以下代码段进行保存。

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

任何想法或建议都将受到高度赞赏!

谢谢!

2 个答案:

答案 0 :(得分:0)

你几乎就在那里,但你需要设置两个db配置并用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.

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

答案 1 :(得分:0)

切换数据源后为我设置控制器的自定义表。 (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. ));