2017-09-26 72 views
0

我想显示一个名称从数据库而不是id(sittername),但我认为它显示在所有行中错误的相同名称。 我想要的是从$ ids数组中获取每个ID的名称。 我希望你能帮助我。我在笨框架使用MVC ..从数据库显示名称而不是ID不正确

我的控制器:

$results = $this->Admin_model->getSitter_Requests($config["per_page"], $page); 

     foreach ($results as $item) 
     { 
      $data['data1'] = []; 
      $sitter_job_id = $item['sitter_job_id']; 

我的问题是在这部分代码,sittername有只有一个来自过去的ID在我的$ ids数组名。我想要的是从$ ids数组中获取每个ID的名称。

$ids = $item['sitter_id']; 

    foreach ((array)$ids as $id) 
    { 
     if($id != 0 && $id != null){ 
      $sittername = $this->Admin_model->get_sitter_name($id[0]); 
      $data["sittername"] = $sittername; 
     } 

    } 
    } 


     $data["results"] = $results; 
     $data["links"] = $this->pagination->create_links(); 

     $this->load->view('admin/superadmin_sitter_requests',$data); 

我的模型:

public function getSitter_Requests($limit, $start) 
    { 
     $this->db->select('*'); 
     $this->db->limit($limit, $start); 
     $query = $this->db->get('ps_sitter_jobs'); 
     if ($query->num_rows() > 0) { 
      foreach ($query->result_array() as $row) { 
       $data[] = $row; 
      } 
      return $data; 
     } 
     return array(); 

    } 
function get_sitter_name($id) { 

     $this->db->select('fname'); 
     $this->db->where('id', $id); 
     $query = $this->db->get('ps_cms_users'); 
     return $query->row()->fname; 

    } 
ps_sitter_jobs table columns: 
sitter_job_id     | int(11) PRI     
sitter_id      | int(11) FK from ps_cms_users(id)     
seller_sitter_id    | int(11)     
token_trans_id     | varchar(255)    
camp_id      | int(11)     
book_id      | int(11)     
sitter_status     | enum('0','1','2','3','4') 
created_date     | datetime     
modify_date     | datetime     
assign_new_sitter_btn_disabled | int(11)     
refund_btn_disabled   | int(11)  
=================================================== 
ps_cms_users table columns: 
id   | int(11)  PRI 
email  | varchar(128) 
password  | varchar(128) 
fname  | varchar(128) 
lname  | varchar(128) 
mobile  | varchar(20) 
roleId  | int(4)  
createdBy | int(11)  
createdDtm | datetime  
updatedBy | int(11)  
updatedDtm | datetime  
partner_type | int(11)  
state  | int(11)  
city   | int(11)  
userDesc  | varchar(255) 
================================================== 

笔者认为:

if(count($results) > 0){ 
    foreach ($results as $result){ 
     $result_id = $result['sitter_job_id']; 
    ?> 
     <tr> 
      <td> 
       <?php echo '#'.$result_id; ?> 
      </td> 
      <td> 
       <?php 
       if($result['sitter_id'] == 0 || $result['sitter_id'] == null) 
       { 
        echo "Sitter Not Assigned yet"; 
       } 
       else 
       {     
        echo $sittername; 

       } 
    } 
    ?> 
+0

请提及表格和它们的列,这样可以很容易地解决这个问题。如果ps_sitter_jobs和ps_cms_users有外键关系,那么你可以有一个内部联接(因为表和数据不清楚 有问题) –

+0

我已经添加表结构和我的具体问题。谢谢 –

回答

1

不是很容易完全理解您想在这里完成的,但我认为你可以使用一个JOIN而不是循环你的第一个结果。这是一个建议。 (我已经离开了分页和HTML格式为清楚起见)

控制器

$data["results"] = $this->Admin_model->getSitter_Requests(); 
$this->load->view('admin/superadmin_sitter_requests', $data); 

模型(Admin_model.php)

public function getSitter_Requests() 
{ 
    $this->db->join('ps_cms_users', 'ps_cms_users.id = ps_sitter_jobs.sitter_id'); 
    return $this->db->get('ps_sitter_jobs')->result(); 
} 

您的视图(管理/ superadmin_sitter_requests)

foreach ($results as $result) 
{ 
    echo 'SITTER_JOB_ID = ' . $result['sitter_job_id']; 
    echo 'SITTER_ID = ' . $result['sitter_id']; 
    echo 'SITTER_FIRSTNAME = ' . $result['fname']; 
} 

我希望这有助于。

+1

Thaaaanls @Klaas这正是我想要的。您。你的模型代码中的一件小事。我应该使用result_array()而不是result()。再次感谢 –