我有两个模特,捐赠者有很多捐款。
创建捐赠者记录后,我想更新一些捐助者字段。我尝试使用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?
答案 0 :(得分:6)
“我是否需要以某种方式手动设置捐赠者ID?”
是
更多解释:
在蛋糕中,如果要更新某些内容,则需要传递ID,否则您将创建新记录。您也可以“加载”模型实例,如
$this->Model->id = $id;
然后保存将更新具有该ID的行。但我总是发现将ID添加到已保存的数组更安全,特别是在使用saveAll
,saveMany
和saveAssociated
时。
在你的情况下,你必须在某个地方拥有捐赠者的身份证,蛋糕不是那么神奇,也不会知道你所指的捐赠者。
像这样的东西
$this->request->data['Donor']['id'] = $the_id;
会做到这一点。
...或者您可以使用不同的查询保存捐赠者的last_donated时间,如果它给您带来太多麻烦。