2012-06-19 2 views
1

내가 뭘하려고하는지 :codeigniter 모델 - 결과 2 세트 반환 - 방법?

나는 검색 창을 가지고 있으며, 게시물이나 사용자 이름 또는 사용자 이메일을 검색 할 수있다.

게시물은 하나의 테이블에 있으며 사용자는 다른 테이블에 있습니다. 여기

는 구조입니다 : USER_ID 후 POST_DATE 볼 수

사용자

사용자 ID 이름 이메일 FIRSTNAME LASTNAME POST_ID

게시물

지금, 나는 내 모델에 다음 코드를 시도하고있다 :

<?php 

public function posts_that_match_search_term($search_term) { 


$post_query = $this->db->query("SELECT * FROM posts,users WHERE post_message LIKE '%$search_term%' AND post_user_id=user_id ORDER BY post_id DESC", array()); 

$post_query2 = $this->db->query("SELECT * FROM users WHERE user_username LIKE '%$search_term%' OR user_email LIKE '%$search_term%' ORDER BY user_id DESC", array()); 


if ($post_query->num_rows() == 0) { 
    return array(); 
} else { 
    $i = 0; 

    foreach ($post_query->result() AS $row) { 
     $post_array[$i]["post_id"] = $row->post_id; 
     $post_array[$i]["post_message"] = $row->post_message; 

     $post_array[$i]["post_datetime"] = $row->post_datetime; 
     $post_array[$i]["post_completion_status"] = $row->post_completion_status; 
     $post_array[$i]["post_completion_date"] = $row->post_completion_date; 
     $post_array[$i]["post_completion_notes"] = $row->post_completion_notes; 
    } 

    return $post_array; 
} 

if ($post_query2->num_rows() == 0) { 
    return array(); 
} else { 
    $a = 0; 

    foreach ($post_query2->result() AS $row2) { 

     $post_array2[$a]["user_id"] = $row2->user_id; 
     $post_array2[$a]["user_name"] = $row2->user_name; 
     $post_array2[$a]["user_username"] = $row2->user_username; 
     $post_array2[$a]["user_image_filename"] = $row2->user_image_filename; 
     $post_array2[$a]["user_first_name"] = $row2->user_first_name; 
     $post_array2[$a]["user_last_name"] = $row2->user_last_name; 
     $post_array2[$a]["user_email"] = $row2->user_email; 





     $a++; 
    } 

    return $post_array2; 
} 
} 

/* 참고 = 코드는 단순 */

두 queryes 작품을 위해 어떤 장소에 단축 및 경우 결과를 반환한다 나는 그들을 하나씩 돌린다. if ($ post_query-> num_rows() == 0) {다음 코드의 두 번째 부분이 정상적으로 작동하고 결과를 반환합니다. 반대의 경우도 마찬가지입니다.

도움을 주시면 감사하겠습니다.

감사합니다,

모두 주석 해제 조란

, 나는 단지 0 결과를 전혀 오류가없는입니다.

누구든지 도움을받을 수 있습니까?

답변

0

Zoran, 사용자 이름이나 이메일을 모두 확인하는 쿼리를 만들어야합니다. 다음과 같이 조인을 만드는 방법을 알고 계십니까?

$this->db->join('posts', posts.userid = users.userid'); 

두 테이블을 결합한 다음 사용자 이름이나 전자 메일을 검색하십시오. 네가 무엇을 생각해 내는지 알려줘!

+0

안녕하세요 Dirk 저는 2 개의 검색어가 필요합니다. 첫 번째 쿼리의 사용자 ID는 어떤 사용자가 게시물을 올리는 지 알려주는 것입니다. 두 번째 쿼리는 사용자 이름이나 전자 메일이 검색어와 일치하는지 확인해야합니다. – Zoran

+0

아니요, 내가 보는 방식이 아니거나 접근 방식이 잘못되었습니다 ... 원하는 결과가 무엇입니까? 내가 알기에 사람들은 검색 창에 뭔가를 채우고 기능은 사용자 이름이나 전자 메일을 검색하여 해당 검색어에 해당하는 게시물을 반환합니다. 사용자 이름이나 전자 메일 주소 인 검색어에 관계없이 두 테이블을 모두 검색하는 쿼리가 하나 필요합니다. –

+0

누군가 lorem ipsum을 검색하면 ... lorem ipsum이 포함 된 게시물을 표시하고 싶습니다. 그러나 Lorem이라는 사용자가있는 경우 게시물과 사용자가 모두 필요합니다. 첫째, 검색 결과 : 게시물과 검색 용어가 포함 된 게시물 게시물과 함께 할 때, 내가 원하는 동일한 페이지에서 : 검색 결과 : 사용자 및 거기에 Lorem이있는 모든 사용자의 데이터가 사용자 이름 또는 이메일에 저장됩니다. – Zoran