2012-03-30 4 views
0

게시물을 표시하는 페이지가 있으며 각 게시물 옆에 작성자의 이름을 가져 오려고합니다. (열이 ID저자 전화와)과 저자에 대한 한 (열라고 제목저자 포함) 페이지에 대한 DB 테이블이 있습니다.Codeigniter :보기에서 루프 내에서 쿼리를 실행하려고 시도했습니다.

제어

function pages() { 
    // QUERIES 
    $pages_query = $this->db->get('table_pages'); 
    $authors_query = $this->db->get_where('table_authors', array('id =' => $row->author)); 

    // DATA 
    $data['pages'] = $pages_query; 
    $data['authors'] = $authors_query; 

    // CREATE 
    $this->load->view('admin_pages', $data); 
} 

보기

<? foreach ($pages->result() as $row): ?> 
     Title: <?=$row->title?>, by <?=$authors['id']?><br /> 
    <? endforeach; ?> 

내 문제는 컨트롤의 ID를 기반으로 저자를 호출에 생각하지만, 난 그냥 그것을 알아낼 수 없습니다.

+0

테이블에 조인이 필요하다고 생각하십니까? table_pages의 author_id 열이 맞습니까? – safarov

답변

1

는 기본적으로, 당신은 당신이 직접 저자 이름에 액세스 할 수 있도록, 당신이 두 개의 쿼리를 사용할 필요가 없습니다, 두 테이블을 JOIN 할 ...

당신은 같은 것을하고 싶지 :

function pages() { 
    // QUERIES 
    $this->db->join('table_authors', 'table_pages.table_authors_id = table_authors.id'); 
    $pages_query = $this->db->get('table_pages'); 

    // DATA 
    $data['pages'] = $pages_query; 

    // CREATE 
    $this->load->view('admin_pages', $data); 
} 

보기

<? foreach ($pages->result() as $row): ?> 
    Title: <?=$row->title?>, by <?=$row->table_authors_name?><br /> 
<? endforeach; ?> 

당신은 내가 당신의 데이터베이스 구조를 알지 않는 한, 어떤 열 이름을 조정해야 할 수도 있습니다. table_pages 및 table_authors에 name 또는 title 필드가 포함되어 있으면 쿼리의 열 이름을 변경해야합니다. 당신은 그냥 쿼리를 작성,

$this->db->select('table_authors.title AS author_name, ...');

+0

고맙습니다. 이것은 나를 위해 일했다. JOIN Active Record Class는 CI 사이트에 대한 문서가별로 없기 때문에 인라인 쿼리를 연습하지 않기 위해 노력하고 있습니다. – Tiny

+0

Active Record 클래스는 SQL 쿼리를 작성하는 래퍼 집합에 불과합니다. Active Record를 사용하여 무언가를하는 방법에 대해 잘 모르는 경우 pure SQL을 사용하여 수행하는 방법을 찾아보십시오. (My) SQL을 더 잘 이해하면 많은 도움이됩니다! – Bram

0

당신은 매우 간단한 방법으로이 작업을 수행 할 수 있습니다 사용하여이 작업을 수행하여 데이터를 얻을 뷰 로딩 함수에 전달할 수 있습니다.

For controller you can write like this 

     function pages() { 

    $pages_query = $this->db->query("SELECT * FROM table_authors as a INNER JOIN table_pages as p ON a.id=p.table_authors_id"); 

    // DATA 
    $data['pages'] = $pages_query->result_array(); 


    // CREATE 
    $this->load->view('admin_pages', $data); // Passing the data to the view loading function. 
    } 


For Views You can write like this. 

    <?php 
    foreach($pages as $page): 
    echo "Title: ".$page['title'].", by ".$page['table_authors_id']; 
    endforeach; 
    ?> 
관련 문제