我正在編輯一個編輯方法。保存數據後,會發送一封電子郵件,其中包含修改期間所做的更改。除了一個令人生氣但卻至關重要的錯誤之外,一切都有效在這裏它被簡單地提取出來:CakePHP:保存後查找數據
$data = $this->SupportTicket->readForView($st_id);
$this->SupportTicket->id = $st_id;
if ($this->SupportTicket->save($this->request->data)) {
//call custom model method to pull view data
$data = $this->SupportTicket->readForView($st_id);
//do something with this data
}
問題是$數據與預保存數據一起出來。因此,我然後嘗試處理新數據不起作用。 我不能僅僅使用$ this-> request-> data,因爲它沒有我想要的全部數據。
然而,保存工作。如果我刷新相同記錄的視圖方法,則它顯示爲已更新。所以它是保存的,但是當我在保存之後進行查找時,它會給我提供舊數據。
任何想法?
更新:findById($ st_id)不會發生,所以它必須與我的自定義方法有關。代碼:
public function readForView($id)
{
$data = $this->find('first', array(
'conditions' => array(
'SupportTicket.id' => $id
),
'contain' => array(
'User',
'Owner'
)
));
if (empty($data)) {
throw new notFoundException('Ticket not found');
}
$data['SupportTicket']['type_long'] = $this->getLongType($data['SupportTicket']['type']);
$data['SupportTicket']['status_long'] = $this->getLongStatus($data['SupportTicket']['status']);
$data['SupportTicket']['name'] = 'Support Ticket #' . $data['SupportTicket']['id'] . ' - ' . $data['SupportTicket']['title'];
return $data;
}
將此方法的代碼複製到Controller中可得到相同的結果。
任何你偶然使用[** query caching **](http://book.cakephp.org/2.0/en/models/model-attributes.html#cachequeries)(Model :: $ cacheQ ueries)? – ndm 2014-10-09 17:09:11
同意,@ndm - 必須有某種緩存發生。 – Dave 2014-10-09 17:17:49
是的,就是這樣!我原本沒有編寫應用程序,也很難看AppModel。 – gazareth 2014-10-09 19:12:43