2015-06-20 31 views
0

控制器[在文章页面文章正确使用分页,将'用户电子邮件ID'存储在'文章'数据库中,现在我试图从用户表中获取用户名和姓,但无法正常工作]通过在codeigniter电子邮件ID获取数据库

public function articles() 
    {  
    $data['title'] = "Articles"; 

    $config = array(); 
    $config["base_url"] = base_url() . "sd/articles/"; 
    $config["total_rows"] = $this->model_users->record_count_articles(); 
    $config["per_page"] = 10; 
    $config["uri_segment"] = 3; 


    $this->pagination->initialize($config); 

    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
    $data["results"] = $this->model_users->fetch_result_articles($config["per_page"], $page); 
    $data["links"] = $this->pagination->create_links(); 


    if ($this->session->userdata ('is_logged_in')){ 
     $data['profile']=$this->model_users->profilefetch(); 
     $this->load->view('sd/header',$data); 
     $this->load->view('sd/articles', $data); 
     $this->load->view('sd/footer', $data); 
    } else { 
     $this->load->view('sd/sdheader', $data); 
     $this->load->view('sd/articles', $data); 
     $this->load->view('sd/sdfooter', $data); 
    } 
} 

模型[获取用户名在文章页面]

 public function record_count_articles() { 
      return $this->db->where('status','1')->count_all("articles"); 
     } 

    public function fetch_result_articles($limit, $start) { 
     $this->db->limit($limit, $start); 
     $query = $this->db->where('status','1')->order_by('id', 'DESC')->get("articles"); 

     if ($query->num_rows() > 0) { 
      foreach ($query->result() as $row) { 
       $data[] = $row; 

      } 
      return $data; 
     } 
     return false; 
    } 

添加这些行[但不起作用]

if ($query->num_rows() > 0) { 
      foreach ($query->result() as $row) { 
       $data[] = $row; 
       $query = $this->db->select('firstname')->select('lastname')->where('email',$data[0]->email)->get("users"); 
       $data['name_info']=$query->result_array(); 
      } 
      return $data; 
     } 
     return false; 
+0

改变这个$ row-> email而不是数据[0] - >电子邮件,也评论这一行// $ data [] = $ row; –

+0

只有第一个文章名称得到,名称数组不重复 –

回答

0

这里有2个问题。请看代码中的评论。

if ($query->num_rows() > 0) { 
      foreach ($query->result() as $row) { 
       //1) $data[0]->email keep repeating same email. 
       // inner $query variable should be different. 
       $innerQuery = $this->db->select('firstname,lastname')->where('email',$row->email)->get("users"); 
       //2) you need to store query result on array. 
       // $data['name_info'] stores only single record. 
       $data[]=$innerQuery ->result_array(); 
      } 
      return $data; 
     } 
     return false; 

应避免在循环查询,如果你能实现它通过加入

编辑:让我们试试这个与加盟

public function fetch_result_articles($limit, $start) { 
     $this->db->limit($limit, $start); 
     $query = $this->db 
     ->join('users u','u.email = a.email','left') 
     ->where('a.status','1')->order_by('a.id', 'DESC')->get("articles a"); 

     if ($query->num_rows() > 0) { 
      foreach ($query->result() as $row) { 
       $data[] = $row; 

      } 
      return $data; 
     } 
     return false; 
    } 

我没有测试的代码。但它比循环更好。

+0

您的代码是帮助完整数组正确重复,但问题是我需要文章数据如此生病添加这些行,“”“$ data [] = $ row;”“” ,我的第一篇文章在[0]中打印,名称在[1]中打印,第二篇文章在[2]中打印,姓名打印在[3]中 –

+0

您可以告诉我外层'$ query'是如何写的?而不是'$ innerQuery' – jagad89

+0

谢谢男人,'加入'的方式是完美的工作,谢谢:) –

相关问题