从CodeIgniter中的另一个表中获取用户名和用户ID

时间:2016-02-12 13:32:01

标签: php mysql codeigniter

我创建了一个模型和控制器,我在其中获取用户评论列表,我想在我的视图中显示他们usernameID,这些文件存储在另一个名为users的表中但是,我还没有弄清楚到底是怎么做的。

这是我的模特

public function fetch_company_reviews($id = NULL) {

    $this->db->select('*');
    $this->db->where('customer_company_reviews_company_id', $id);
    $this->db->from('customer_company_reviews');
    $this->db->order_by('customer_company_reviews_id', 'desc');
    $this->db->limit(1);
    $query = $this->db->get();
    if($query->num_rows() == NULL) {
        return false;
    }
    else {
        return $query->result();
    }

}

这是我的控制器

public function index($id = NULL)
{
    $id = $this->input->get('id'); 
    $data['company_info'] = $this->Company_model->fetch_company($id);
    $data['company_reviews'] = $this->Company_model->fetch_company_reviews($id);
    $get = $data['company_info'];
    $this->load->view('includes/header');
    $this->load->view('company/company_index', $data);
    $this->load->view('includes/footer');
}

这是我的观点

<?php foreach ($company_reviews as $review) { ?>
<div class="review-box">
  <div class="row">
    <div class="col-sm-3">

    </div>
    <div class="col-sm-9">
      <h4><?= $review->customer_company_reviews_title; ?></h4>
      <?= $review->customer_company_reviews_comment; ?>
    </div>
  </div>
<?php } ?>

表格结构users

id | username
-------------
 1 | admin

表格结构customer_company_reviews

cu...reviews_id | cu...reviews_author | cu...reviews_title
---------------------------------------------------------
 1              | 1                  | Some title

如何从id获取和访问usernameusers - 表customer_company_reviews_author - 行将用户ID存储在我的评论表(customer_company_reviews)中然后最终在我的视图中将其显示为foreach循环中的变量?

2 个答案:

答案 0 :(得分:1)

使用与用户表的连接,如下所示

$this->db->select('customer_company_reviews.* ,users.*');
$this->db->join('users', 'users.id = customer_company_reviews.customer_company_reviews_author');
$this->db->where('customer_company_reviews_company_id', $id);
$this->db->from('customer_company_reviews');
$this->db->order_by('customer_company_reviews_id', 'desc');
$this->db->limit(1);

从两个表中使用*,因为我们需要来自用户表的id和用户名。

答案 1 :(得分:1)

朋友您可以使用join轻松获取结果。我会帮助您

在模型中

public function fetch_company_reviews($id = NULL) 
{       
    $this->db->select('*');
    $this->db->from('customer_company_reviews');
    $this->db->join('users', 'customer_company_reviews.customer_company_reviews_company_id = users.reference_review_id', 'left');
    $this->db->where('customer_company_reviews_company_id', $id);
    $this->db->order_by('customer_company_reviews_id', 'desc');
    $this->db->limit(1);
    $query = $this->db->get();
    return $query->result();
}