2011-11-09 36 views
0

我新的codeigniter和php,MySQL和我正在做一個codeigniter應用程序,並有一個關於數據庫查詢使用活動記錄的問題。兩個表上的Codeigniter數據庫查詢

我想遍歷「用戶」表,並同時得到一個名爲cv的表,其中用戶標識等於cv記錄中的owner_id。簡歷表中有很多像學校,日期,結束日期,等級等繼承人我是如何做到的列:

控制器:

function index() { 
    $data['members'] = $this->user_model->_search_members(); 
    $data['main_content'] = 'agency/start'; 
    $this->load->view('site_view', $data); 
} 

型號:

function _search_members() 
{ 

    $this->db->select('id,username,first_name,last_name,company,presentation,title_1,title_2,title_3,last_login,user_pic,counties,municipalities,birthday,gender,webpage')->from('users'); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) { 
     return $query->result(); 
    } 
} 

function _get_cv($id) { 
    $this->db->select()->where('owner_id',$id); 
    $query = $this->db->get('cv'); 

    return $query->result(); 
} 

視圖:

<section id="main"> 

<h2>Search members</h2> 

<table> 
    <tr> 
     <td></td> 
     <td>User</td> 
     <td>Gender</td> 
     <td>Name</td> 
     <td>Title</td> 
     <td>Location</td> 
     <td>Age</td> 
     <td>School</td> 
    </tr> 
    <?php foreach ($members as $member) : ?> 
     <?php $cvs = $this->user_model->_get_cv($member->id); ?> 
     <tr> 
      <td><img src="<?=base_url()?>images/users/thumbs/<?=$member->user_pic;?>" alt=""></td> 
      <td><a href="profile/view/<?php echo $member->id; ?>"><?php echo $member->username;?></a></td> 
      <td><?php echo $member->gender;?></td> 
      <td><?php echo $member->first_name; ?> <?php echo $member->last_name; ?></td> 
      <td><?php echo $member->title_1; ?>/<?php echo $member->title_2; ?>/<?php echo $member->title_3; ?></td> 
      <td><?php echo $member->counties; ?> i <?php echo $member->municipalities; ?></td> 
      <td><?php echo $member->birthday;?></td> 
      <td> 
       <?php foreach ($cvs as $cv) : ?> 
        <?php echo $cv->school; ?> 
       <?php endforeach; ?> 
      </td> 
     </tr> 
    <?php endforeach; ?> 
</table> 

現在我的問題是,這是一個好辦法嗎?我也希望能夠用稍後創建的表單搜索頁面上的用戶和cv表格。我是否應該在表格上進行連接,以便能夠做出更好的搜索查詢,或者我還可以這樣做嗎?

任何幫助表示讚賞。

問候

喬治

回答

3

使用方法如下:

$this->db->select('*'); 
$this->db->from('users'); 
$this->db->join('cv', 'users.id = cv.owner_id','left'); 
$query = $this->db->get(); 

欲瞭解更多信息: http://codeigniter.com/user_guide/database/active_record.html

更新時間:

$this->db->select('*'); 
$this->db->from('users'); 
$this->db->join('cv', 'users.id = cv.owner_id','left'); 
$data = $this->db->get(); 

$group_cv = $users = array(); 
foreach ($data as $k=>$v) { 
    $group_cv[$v['id']][] = $v; 
} 

foreach ($data as $k=>$v) { 
    $users[$v['id']] = $v; 
} 

?> 

<section id="main"> 

<h2>Search members</h2> 

<table> 
    <tr> 
     <td></td> 
     <td>User</td> 
     <td>Gender</td> 
     <td>Name</td> 
     <td>Title</td> 
     <td>Location</td> 
     <td>Age</td> 
     <td>School</td> 
    </tr> 
    <?php foreach ($users as $member) : ?> 
     <tr> 
      <td><img src="<?=base_url()?>images/users/thumbs/<?=$member->user_pic;?>" alt=""></td> 
      <td><a href="profile/view/<?php echo $member->id; ?>"><?php echo $member->username;?></a></td> 
      <td><?php echo $member->gender;?></td> 
      <td><?php echo $member->first_name; ?> <?php echo $member->last_name; ?></td> 
      <td><?php echo $member->title_1; ?>/<?php echo $member->title_2; ?>/<?php echo $member->title_3; ?></td> 
      <td><?php echo $member->counties; ?> i <?php echo $member->municipalities; ?></td> 
      <td><?php echo $member->birthday;?></td> 
      <td> 
       <?php foreach ($group_cv[$member['id']] as $cv) : ?> 
        <?php echo $cv->school; ?> 
       <?php endforeach; ?> 
      </td> 
     </tr> 
    <?php endforeach; ?> 
</table> 
+0

好的。感謝您的快速回復。但我如何通過它們循環,以便我在html表中的一行中獲取所有信息。說一個用戶在cv數據庫中有5所學校。我希望他們在一個td中出現。而不是使用用戶名和所有用戶信息獲得5 td? – georgesamper

+0

我的意思是得到5 tr。 – georgesamper

+0

您應該將數據從數據庫中分離到'用戶組數組中'。
像這樣: //這裏是你的 $ group = array(); $ data =來自DB的數據 foreach($ data as $ k => $ v){ $ group [$ v ['id']] = $ v; } – Oyeme