发出使用选项检索数据的问题

时间:2014-04-22 07:51:36

标签: controller cakephp-2.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,那么它可以正常工作,例如但是,如下表所示,如果$ thread_id值与记录ID不对应,则会出现错误 -

  

' /消息/ view_thread / 5'在此服务器上找不到

即使表格中有$ thread_id为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

我无法解决发生的事情,任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我认为您误解了$this->Model->exists();它会查找id字段而不是您提供的$thread_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'));    
}