Codeigniter活动记录类加入两个mysql表

时间:2014-07-26 12:26:08

标签: php mysql codeigniter

只想从表评论中获取 user_id review_text 值,选择名称城市用户,其中 id = user_id ,然后将 review_text,用户名城市返回给控制器。请帮帮我。

public function did_get_reviews($item_id){

    $this->db->select('user_id','review_text');
    $this->db->from('reviews');   
    $this->db->where('post_id', $item_id);

    $user_id = 'user_id' //??

    $this->db->select('name','city');
    $this->db->from('users');   
    $this->db->where('id', $user_id);

    $query = $this->db->get('review_text','username','city'); //??

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   } 

更新1: 我只是尝试加入表格,但它只返回 review_text 的值,但我还希望获得名称城市的值。请检查以下代码:

public function did_get_reviews($item_id){

    $this->db->select('reviews.review_text','users.name','users.city');
    $this->db->from('reviews','users');   
    $this->db->where('reviews.post_id', $item_id);
    $this->db->join('users','reviews.user_id = users.user_id');

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

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   }

2 个答案:

答案 0 :(得分:2)

我认为你需要在SQL中使用 join 查询。如果您使用此代码,您可以访问您想要的内容

$result = $this->db->select('review, username, city')
            ->from('reviews')
            ->join('city', 'city.user_id = review.user_id')
            ->get();
print_r($result);

有关如何在codeigniter中编写连接查询(左,内或右)的更多信息,您可以看到link

我希望此代码可以解决您的问题


<强>更新

在你的新问题中。你的代码有一点儿车。你需要以这种方式写你的选择

public function did_get_reviews($item_id){

    $this->db->select('reviews.review_text,users.name,users.city')
             ->from('reviews','users')   
             ->where('reviews.post_id', $item_id)
             ->join('users','reviews.user_id = users.user_id');

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

    if ($query && $query->num_rows() >= 1){
    return $query->result();
    }
    else {
    return false;
    }
   }
在codeigniter中选择活动记录;任何列名称仅由,彼此分隔(不是',

codeigniter documentation中的

写了

  

允许您编写查询的SELECT部分​​:

     

$ this-&gt; db-&gt;选择(&#39;标题,内容,日期&#39;);

     

$ query = $ this-&gt; db-&gt; get(&#39; mytable&#39;);

     

//生成:SELECT标题,内容,日期FROM mytable

答案 1 :(得分:0)

您可以使用以下内容获取user_id的值:

$this->db->select('user_id','review_text');
$this->db->from('reviews');   
$this->db->where('post_id', $item_id);
$result = $this->db->get();
print_r($result);

使用相同的$this->db->get();来获取第二个查询的值。一旦获得变量中的值,就可以迭代它。类似的东西:

foreach ($result->result() as $row)
{
    echo $row->name;
    echo $row->city;
}