我使用以下代码检索所有与我正在处理的客户门户项目具有相同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
我无法解决发生的事情,任何人都可以帮助我。
答案 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'));
}