2014-10-09 1 views
1

Я работаю над методом редактирования. После сохранения данных отправляется электронное письмо с изменениями, внесенными во время редактирования. Все работает, кроме одной бешеной, но важной ошибки. Здесь он очень просто отгоняется: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->, потому что у него нет полных данных, которые я хочу в нем.

Сохранение однако работа. Если я обновляю метод просмотра для той же записи, он отображается как обновленный. Так что это экономия, но когда я нахожусь после сохранения, это дает мне старые данные.

Любые идеи?

Обновление: этого не происходит с 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; 
} 

Копирование кода из этого метода в контроллер дает тот же результат.

+4

Вы по какой-либо шанс использовать [** кеширование запросов **] (http://book.cakephp.org/2.0/en/models/model-attributes.html#cachequeries) (Model :: $ cacheQ ueries)? – ndm

+0

Согласитесь, @ndm - должно произойти какое-то кэширование. – Dave

+0

Да, вот и все! Я не писал приложение изначально и вряд ли смотрю в AppModel. – gazareth

ответ

-1

попытаться использовать последний Вставьте ID

$ ID = $ this-> getLastInsertID();

общественная функция readForView ($ ID)

+0

Это не полезно. Мне не нужен последний идентификатор вставки для метода UPDATE. Я уже знаю $ id. Решение находится в комментариях к основному вопросу. – gazareth