2014-04-12 60 views
-1

顯示單行結果我有兩個表一個用於用戶和其他項目上市如何查詢從數據庫中的兩個表,使用該笨

我的問題是,我要顯示的每個項目(從project_table )和單排

的project_table屬於誰列出的項目(從USER_TABLE用戶)的電子郵件有USER_ID行(即從USER_TABLE ID標識誰張貼的項目)

這裏是我的看法用戶(project_view): 我這個案例im顯示來自project_table的數據,但我想顯示一封來自USER_TABLE

<?php 
foreach($query as $row) 
{ 
?> 
    <p> <?echo $row->pro_name ?></p> 
<p> <?echo $row->duration ?></p> 
<p> <?echo $row->budget ?></p> 
<p>User email will be displayed here</p> 
<? 
} 

我的模型中的特定用戶:

function get_projects() 
{ 
    $query = $this->db->get('project_table'); 
    return $query->result(); 
} 

我的控制器:

function show_projects() 
{ 
    $data['query']=$this->project_model->get_projects(); 
    $this->load->view('project_view', $data); 
} 

就如何落實這一任何想法,我將非常感激

+0

這樣做,能夠通過連接或嵌套的foreach()。我會嘗試演示兩個(在答案中)。 – Kyslik

回答

0

嘗試join this -


1)型號

function get_projects() 
{ 
    $this->db->select('*'); 
    $this->db->from('project_table'); 
    $this->db->join('user_table', 'project_table.user_id = user_table.id'); 

    $query = $this->db->get(); 

    if($query->num_rows() > 0) 
    { 
     return $query->result(); 
    } 
} 


2)控制器

$data['user_project'] = $this->project_model->get_projects(); 
$this->load->view($view, $data); 


3)查看

foreach($user_project as $row) 
{ 
    echo "<p>" .$row->pro_name. "</p>"; 
    echo "<p>" .$row->duration. "</p>"; 
    echo "<p>" .$row->budget. "</p>"; 
    echo "<p>" .$row->email. "</p>"; 
} 
+0

像魅力一樣工作! – user3359251

+0

樂意幫忙! :) –

0

您可以在模型中使用連接查詢

function get_projects() 
{ 

    $query =$this->db->select('p.*,u.email') 
       ->from('project_table p') 
       ->join('user_table u','p.user_id = u.id') 
       ->get(); 
    return $query->result(); 

} 

而且在你看來,你可以這樣做

<?php 
foreach($query as $row) 
{ 
?> 
    <p> <?php echo $row->pro_name; ?></p> 
    <p> <?php echo $row->duration; ?></p> 
    <p> <?php echo $row->budget; ?></p> 
    <p><?php echo $row->email;?></p> 

<?php 
} 
?> 
0

我會重寫控制器和模型功能以允許用戶參數:

function get_projects($user=null) 
{ 
    if ($user == null){ 
     $query = $this->db->get('project_table'); 
    }else{ 
     $query = $this>db->get('project_table')->where('user_id',$user); 
    } 
     return $query->result(); 
} 


function show_projects($user) 
{ 
    $data['query']=$this->project_model->get_projects($user); 
    $this->load->view('project_view', $data); 
} 

現在你可以打電話給你的控制器與用戶參數

http://..../show_user/1 
0

第一種方法是聯接

$this->db->select('project_table.* as project, user.id as user_id, user.email as email') 
     ->from('project_table') 
     ->join('user', 'project.id = user_id'); 
$result = $this->db->get(); 

第二不建議

function get_projects() 
{ 
    $query = $this->db->get('project_table'); 
    return ($query->num_rows() > 0) ? $query->result() : FALSE; 
} 

function get_email($id = FALSE) { 
    if ($id === FALSE) return FALSE; 
    $query = $this->db->get_where('user', array('user_id' => $id)); 
    return ($query->num_rows() > 0) ? $query->result() : FALSE; 
} 
在控制器

某處...

if (!$projects = $this->model->get_projects()) { 

    foreach ($projects as $key => $project) { 
     # code... 
     $projects[$key]->user_email = $this->model->get_email($project->user_id); 
    } 

    //projects is now with user_email field 
    $this->load->view()... 

} else { 

    //no data recieved 
    redirect(); //redirect to default_controller 
}