2011-12-03 6 views
1

내 CodeIgniter 프로젝트에서 프로젝트 목록을 가져와 페이지에 성공적으로 출력했습니다. 그러나 해당 페이지의 열 중 하나에있는 데이터는 프로젝트 ID를 사용하여 DB의 다른 테이블에서 검색되어야합니다. 아무도 그게 어떻게 할 수 있는지 알아낼 수 있을까요? 기본적으로 프로젝트 ID를 지정하는 다른 테이블에 대해 다른 쿼리를 작성해야하지만 실제로 CodeIgniter를 사용하여이를 수행하는 방법을 알지 못합니다.데이터베이스에서 데이터를 가져 오는 CodeIgniter

UPDATE 나는 다음과 같은 기능을 프로젝트 목록을 받고있어 모델에서

:

function get_projects_list($page, $limit){ 
     $sql = sprintf("SELECT * FROM Project WHERE deleted != 1 LIMIT %d, %d", ($page-1)*$limit, $limit); 
     $query = $this->db->query($sql); 
     return $query->result(); 
    } 

그리고 나는 다음과 같은 함수를 호출 컨트롤러에서 :

$projects_list = $this->Project_management_model->get_projects_list($curPage, self::$LIMIT_PER_PAGE); 

     $data['projects_list'] = $projects_list; 
     $data['cur_page'] = $curPage; 
     $data['page_count'] = $pageCount; 

     $this->load->view('project_management_view', $data); 
에게

그리고보기에서 나는 foreach를 사용하여 $ 데이터를 실행하고 그 결과를 테이블에 나열합니다. 이 테이블에는 해당 행의 프로젝트 ID를 기반으로 다른 테이블의 결과를 표시해야하는 열이 있습니다.

도와 주셔서 감사합니다.

+0

당신은 codeigniter의'subquery'에 대해 알고 싶습니까 ?? –

답변

0

저는 실제로 사용자 정의 도우미로이를 수행하는 방법을 발견했습니다. 새로운 헬퍼를 생성하고 컨트롤러에로드하면 헬퍼의 함수를 뷰에서 사용할 수있는 옵션이 제공됩니다.

감사합니다.

+0

다른 답변을 통해 나만의 답변을 수락하기 때문에 최소한 구체적이고 구체적으로 수행 한 작업을 보여줄 수 있습니까? 이 방법은 당신의 질문이 다른 사람들에게 더 도움이됩니다. 고맙습니다. – Sparky

0
public function get data() 
{ 
    $this->db->flush_cache(); 
    $query = $this->db->get('project_table'); 
    $result = $query->result(); 
    $data = array(); 
      for ($i = 0;$i < count($result);$i++) 
     { 
       $data[$i] = $result[$i]; 
       $data[$i]['project_data'] = temp($result[$i]->id); 
     } 
     return data; 
} 

private function temp($id = 0) 
{ 
$this->db->flush_cache(); 
$this->where('id',$id); 
$query = $this->db->get('project_table2'); 
$result = $query->result(); 
if (count($result) != 0) 
return $result[0]->data; 
} 

당신은 그런 식으로 할 수 있습니다, 또는 당신은 데이터베이스의 쿼리 기능에 의해 하위 쿼리를 사용할 수 있습니다.

+0

내 질문을 업데이트했습니다. – cycero

0

ActiveRecord를 사용하고 있는지 여부는 언급하지 않았습니다. 나는 네가 그렇다고 가정하고있다. 나는 또한 당신이해야 할 일은 JOIN을 사용하는 것이라고 생각할 것입니다.

똑바로 SQL을 사용하고 있었던 경우, 이런 식으로 뭔가를 보일 수 있습니다 일부 SQL을 사용하여이 작업을 수행 할 것입니다 : 약속의 사용자 ID를 기반으로 사용자 테이블에서 사용자 이름을 당겨 것

SELECT a.appointment_time, u.user_real_name FROM appointment a, site_user u WHERE u.site_user_id = a.user_id; 

테이블에 저장하고 쿼리 결과에 약속 시간을 입력하십시오. 액티브를 사용

, 당신은 같은 것을 할 것 :

$this->db->select('appointment_time,user_real_name')->from('appointment')->join('site_user', 'site_user_id=appointment_user_id'); 

을 왜 당신은 우리에게 당신의 질문에 대해 조금 더 이야기하지 않습니다. 특히, 다른 테이블의이 열을 첫 번째 테이블의 행과 관련되게할까요? 그렇다면 내 JOIN 제안이 필요한 것입니다.

+0

내 질문을 업데이트했습니다. – cycero

+0

JOIN이 실제로 필요한 것일지도 모른다고 당신의 업데이트를 기반으로 생각합니다. 불행히도, 나는 아직도 당신이하려고하는 것에 대해 불분명 한 어떤 이유로 느끼고 있습니다. 문제의 세 칼럼의 이름을 알려주시겠습니까? 1. 다른 테이블에서 필요한 열의 이름은 무엇입니까 ('table'''column' 형식으로). 2. 첫 번째 테이블에 동일한 형식의 ID가있는 열의 이름은 무엇입니까? , 3. 다른 테이블의 id 열의 이름은 (다른 응답과 같은 형식으로) 무엇입니까? –

관련 문제