我正在研究一种编辑方法。保存数据后,将发送一封电子邮件,其中包含在编辑过程中所做的更改。除了一个令人恼火但至关重要的bug之外,一切都正常。下面是一个非常简单的提炼:
$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
}问题是$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中会得到相同的结果。
发布于 2016-07-22 20:24:13
我发现这很有帮助:https://edivad.wordpress.com/2008/04/15/cakephp-disable-model-queries-caching/
按型号:
class Project extends AppModel {
var $cacheQueries = false;
...按函数:
function someFunction {
$this->Model->cacheQueries = false;
...发布于 2014-10-10 20:54:33
尝试使用最后一个插入ID
$id=$this->getLastInsertID();
公共函数接口( public function readForView,$id)
https://stackoverflow.com/questions/26283035
复制相似问题