1

如果这是一个非常n00b的问题,我很抱歉,但我似乎无法解决这个问题。

我正在使用 mahana 消息库,我正在尝试创建一些基本视图和基本控制器来发送消息和检索消息。我已经发送了一条消息(差不多),我可以在收件人个人资料上查看发送的消息。

这是我的问题。我希望能够在收件人查看消息页面上显示发送消息的用户的详细信息以及发送的消息。这些详细信息存储在用户表中。

问题是,如何根据消息模型中的 get_all_threads($user_id) 模型的结果运行模型查询以从消息控制器中的 view_my_messages 函数中获取用户名、头像位置等?

我在下面包含了来自控制器、视图和模型的代码。

控制器:

function view_my_messages(){
        $this->load->library('mahana_messaging');
        $user_id = $this->session->userdata('id');

        $data['message'] = $this->mahana_model->get_all_threads($user_id);

        $this->load->view('messages/my_messages',$data);

    }

消息模型:

function get_all_threads($user_id, $full_thread = FALSE, $order_by = 'asc')
    {
        $sql = 'SELECT m.*, s.status, t.subject, '.USER_TABLE_USERNAME .
        ' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
        ' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
        ' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
        ' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_TABLENAME .'.'. USER_TABLE_ID . ' = m.sender_id) '.
        ' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
        ' WHERE p.user_id = ? ' ;

        if (!$full_thread)
        {
            $sql .= ' AND m.cdate >= p.cdate';
        }

        $sql .= ' ORDER BY t.id ' . $order_by. ', m.cdate '. $order_by;

        $query = $this->db->query($sql, array($user_id, $user_id));

        return $query->result_array();
    }

看法:

<div class="row-fluid">

    <div class="span12">
        <div class="well">
            <h3>View Messages</h3>
            <?php foreach($message as $messagefield):?>

            <h4><?php echo $messagefield['subject'];?></h4>

            <?php endforeach; ?>
        </div>
    </div>
 </div>
4

1 回答 1

2

@Morph_ByteSense - 你有两个选择:

1) msg​​_participants p 是包含线程上所有其他人(不仅仅是发件人)的表,您可以再次加入 users 表并扩展您的 SELECT stmt

2)(不太好,但您不需要扩展库)在您的结果中,您可以执行 foreach() 循环并查询所有参与者和查询详细信息

我会推荐第一个选项 - 我以前从来没有人要求过这个,但它可能会带来很好的增强

于 2013-09-01T10:24:58.423 回答