gpt4 book ai didi

php - Codeigniter 奇怪的查询结果

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:58 25 4
gpt4 key购买 nike

我正在尝试在 CodeIgniter 中构建一个消息传递系统。我有如下三个表。

消息:

  • 编号
  • thread_id
  • 消息编号
  • 主题
  • 留言
  • 已发送

消息线程:

  • 编号
  • thread_id

messages_participants:

  • 编号
  • thread_id
  • to_id
  • 来自_id
  • 消息编号

我可以轻松地撰写新邮件,并且收件人可以看到已收到邮件。

当有回复时,问题就来了。回复后结果重复。它显示初始消息是从发起者和接收者发送的,并且返回 4 行而不是预期的 2 行。谁能告诉我哪里出错了?

这是我的模型:

function reply_to_thread(){
//Generate random string for the ticket number
$rand = substr(str_shuffle(MD5(microtime())), 0, 11);
//Add the random string to the hash
$messageid = $rand;
$messageinsert = array(
'message_id' => $messageid,
'subject' => $this->input->post('subject'),
'message' => $this->input->post('message'),
'thread_id' => $this->input->post('thread_id'),

);

$participantsinsert = array(
'message_id' => $messageid,
'from_id' => $this->input->post('from_id'),
'to_id' => $this->input->post('to_id'),
'thread_id' => $this->input->post('thread_id'),
);
$this->db->insert('messages',$messageinsert);
$this->db->insert('messages_participants',$participantsinsert);
}

function view_thread($thread_id){
$this->db->where('messages.thread_id', $thread_id);
$this->db->join('messages_participants', 'messages_participants.thread_id = messages.thread_id');
$this->db->join('users', 'messages_participants.from_id = users.id');
$result = $this->db->get('messages');
var_dump($result);
return $result->result_array();
}

我的 Controller :

  function check_messages(){
$id = $this->session->userdata('id');
$data['thread'] = $this->message_model->check_messages($id);
$this->load->view('messages/my_messages', $data);

}
function view_thread($thread_id){
$data['thread'] = $this->message_model->view_thread($thread_id);
$this->load->view('messages/view_thread',$data);
}
function reply(){
$this->message_model->reply_to_thread();
redirect('messages/get_messages');
}

我的 View 线程 View :

<div class="well">
<h3>View Messages</h3>
<?php foreach($thread as $threadfield):?>

<div class="message">
<img class="avatar pull-left" src="<?php echo $threadfield['avatar'];?>">
<div class="message-actions">
<button class="btn btn-success" id="reply">Reply</button>
</div>
<p>
<strong>
From: <a href="profile.html"> Users id: <?php echo $threadfield['from_id'];?></a>
</strong>
<span class="badge badge-important">Unread</span><br>
<strong>Date:</strong>
<?php echo date('M j Y g:i A', strtotime($threadfield['sent']));?>
</p>
<p><strong>Subject:</strong>
<a href = "/messages/view_thread/<?php echo $threadfield['thread_id'];?>">
<?php echo $threadfield['subject'];?>
</a>
</p>
<p><strong>Message:</strong> <?php echo $threadfield['message'];?></p>
<hr>
</div>
<?php endforeach; ?>
</div>
<div class="row-fluid" id="replyform" style="display: none">
<div class="well">

<h3>Reply to <?php echo $threadfield['username'];?>'s Message.</h3>

<?php echo form_open('messages/reply');?>

<input type="text" value="<?php echo $threadfield['thread_id'];?>" name="thread_id" id="thread_id">
<input type="text" value="<?php echo $this->session->userdata('id');?>" name="from_id" id="from_id">
<input type="text" value="<?php echo $threadfield['from_id'];?>" name="to_id" id="to_id">
<input type="text" value="RE: <?php echo $threadfield['subject'];?>" name="subject" id="subject">
<input type="text" placeholder="Message......." name="message" id="message">
<button class="btn" type="submit">Submit Reply</button>
<?php echo form_close();?>
</div>

编辑:

我设法解决了这个问题,但它又产生了一个新问题。我通过修改连接解决了这个问题,所以我们没有绑定(bind)到用户但参与者的消息,但现在,我无法显示正确的用户数据来显示初始新消息,它总是显示最后的发件人详细信息或最后收件人的详细信息。这取决于我是否将连接设置为 from_id 或 to_id。有谁知道我如何将用户表连接到最后一条消息?

最佳答案

我在您的查询中没有看到任何显示最新记录的ORDER BY

function view_thread($thread_id){
$this->db->where('messages.thread_id', $thread_id);
$this->db->join('messages_participants', 'messages_participants.thread_id = messages.thread_id');
$this->db->join('users', 'messages_participants.from_id = users.id');
$this->db->order_by('field_name_goes_here');//put the name of field to set order by..
$result = $this->db->get('messages');
return $result->result_array();
}

关于php - Codeigniter 奇怪的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com