簡體   English   中英

Codeigniter活動記錄類聯接兩個mysql表

[英]Codeigniter active record class join two mysql tables

只想從表評論中獲取user_idreview_text值,從表用戶中選擇iduser_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的值,但我也想獲取namecity的值。 請檢查以下代碼:

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;
    }
   }

我認為你需要使用SQL 聯接查詢。 如果您使用此代碼,則可以訪問所需的內容

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

有關如何在codeigniter中編寫聯接查詢(向左,向內或向右)的更多信息,請參見此鏈接

我希望這段代碼可以解決您的問題


UPDATE

在您的新問題中。 您的代碼有一些錯誤。 您需要以這種方式編寫選擇

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 文檔中寫道

允許您編寫查詢的SELECT部分​​:

$ this-> db-> select('title,content,date');

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

//產生:SELECT標題,內容,日期from mytable

您可以使用以下方法獲取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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM