2014-02-19 36 views
1

我有兩個模型,捐助者有很多捐款。cakePHP- saveAssociated()更新

創建捐助者記錄時,我想更新一些捐助者字段。我試着用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?

回答

6

「我需要手動設置捐助者ID嗎?」

是的。

更多解釋

在蛋糕,如果你想更新的東西,你需要通過ID,否則你會創建一個新的紀錄。您還可以「加載」模型實例,如

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

然後保存將使用該ID更新該行。但是我總是覺得在保存的數組中添加id更加安全,特別是在使用saveAllsaveManysaveAssociated時。

在你的情況下,你必須在某個地方有捐獻者的身份證,蛋糕不是那麼神奇,它不會知道你在指什麼捐助者。

像這樣的事情

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

會做的伎倆。

...或者您可以使用不同的查詢保存捐助者的last_donated時間,如果它給您帶來太多麻煩。

+0

嗨Nunser ..感謝您的詳細解釋!這按預期工作。再次感謝! – LogixMaster