2014-04-22 41 views
0

我正在使用以下代码来检索所有具有相同thread_id的消息,这些消息是我正在处理的客户门户项目。使用选项检索数据问题

public function view_thread($thread_id = null) { 
    if (!$this->Message->exists($thread_id)) { 
     throw new NotFoundException(__('Invalid message')); 
    } 
    $options = array('conditions' => array('Message.thread_id' => $thread_id)); 
    $messages = $this->Message->find('all', $options); 
    $this->set(compact('messages'));  
} 

目前$ thread_id被设置为一个整数,虽然我最终会喜欢使用一个随机字符串。

它工作正常,如果$ thread_id也恰好是消息表中的记录ID例如1,如下表所示,但是,如果$ thread_id单值不以记录ID对应我得到一个错误 -

“/消息/ view_thread/5”在此服务器上未找到

即使有在表中的5

id thread_id subject 
1  1   Test Message 
2  1   Re: Test Message 
6  1   Re: Test Message 
12 1   Re: Test Message 
24 5   New Test Message 
25 5   Re: New Test Message 

的thread_id单$我不能为我的生活工作到底是怎么回事,谁能帮助我的消息。

回答

0

我想你missunderstood的$this->Model->exists();它会寻找不$thread_id您提供id场....所以,尽量这 -

public function view_thread($thread_id = null) { 
    if(empty($thread_id)){ 
     throw new NotFoundException(__('Invalid message')); 
    } 

    $options = array('conditions' => array('Message.thread_id' => $thread_id)); 
    $messages = $this->Message->find('all', $options); 

    if(empty($messages)){ 
     throw new NotFoundException(__('Invalid message')); 
    } 
    $this->set(compact('messages'));  
} 
+0

感谢,完美的作品 – djcamo

+0

然后勾选此作为一个答案...其他人可能会从这里得到帮助... –