cakePHP- saveAssociated()更新

时间:2014-02-19 19:59:05

标签: cakephp cakephp-2.3

我有两个模特,捐赠者有很多捐款。

创建捐赠者记录后,我想更新一些捐助者字段。我尝试使用saveAssociated(),如下所示

$this->Donation->create();
$this->request->data['Donation']['donor_id'] = $id;
$this->request->data['Donor']['last_donated'] = date('Ymd H:i:s', strtotime('now'));            

if($this->Donation->saveAssociated($this->request->data , array('deep' => true))){
}

除了捐赠者没有更新,但总共创建了新的捐赠记录外,一切都有效 我是否需要以某种方式手动设置捐赠者ID?

1 个答案:

答案 0 :(得分:6)

“我是否需要以某种方式手动设置捐赠者ID?”

更多解释

在蛋糕中,如果要更新某些内容,则需要传递ID,否则您将创建新记录。您也可以“加载”模型实例,如

$this->Model->id = $id;

然后保存将更新具有该ID的行。但我总是发现将ID添加到已保存的数组更安全,特别是在使用saveAllsaveManysaveAssociated时。

在你的情况下,你必须在某个地方拥有捐赠者的身份证,蛋糕不是那么神奇,也不会知道你所指的捐赠者。

像这样的东西

$this->request->data['Donor']['id'] = $the_id;

会做到这一点。

...或者您可以使用不同的查询保存捐赠者的last_donated时间,如果它给您带来太多麻烦。