2013-08-28 3 views
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> 

감사합니다!

+0

참조 http://ellislab.com/codeigniter/user-guide/database/active_record.html 당신을 도울 것입니다 –

+0

@DesertP는''JOIN '하지 않습니다. $ this-> db-> dbprefix. USER_TABLE_TABLENAME. 'ON ('. USER_TABLE_TABLENAME. '.'USER_TABLE_ID. '= m.sender_id)'.' 이미 해 보셨습니까? –

답변

2

@Morph_ByteSense - 두 가지 옵션이 있습니다

1) 페이지를 msg_participants 스레드 (뿐만 아니라 보낸 사람)에있는 모든 다른 사람들을 보유하고있는 테이블, 당신은 당신은 &에 한 번 더 사용자 테이블에 가입 할 수 있습니다 당신의 선택 stmt를 확장

2) (좋지 않다,하지만 당신은, 당신이 & 조회 상세 내역 모든 참가자 통해 foreach는() 루프 및 쿼리를 할 수있는 결과에) 라이브러리를 확장 할 필요가 없습니다

나는 첫번째 선택권을 추천 할 것입니다 - 나는 이제까지 이것을 누구가 요구해달라고하지 않았다, 하지만 그것은 좋은 향상을 만들 수 있습니다