簡體   English   中英

如何從Codeigniter中的三個表中檢索數據以獲得完整視圖

[英]how to retrieve data from three table in codeigniter for complete view

我是codeigniter和php的新手。 我有兩個表我的數據庫 ,我需要做的是我想從表中檢索user_details,user_comments數據。

user_details的ID是相同user_comments id_user。

我想在我的視圖上顯示一些輸出,因為沒有類似這樣的條件,我需要所有用戶列表,其中first_name,user_details中的last_name和comm_id中 用戶的評論數

        public function user_details(){

        $query=$this->db->select('id, f_name, l_name')
                ->from('user_details');

            $array=array();

            foreach($query->result() as $row)
                 {
                    $id=$row->id;
                    $array['f_name']=$row->f_name;
                    $array['l_name']=$row->l_name;
                    $query1=$this->db->select('comments')
                    ->from('user_comments')
                    ->where('id_user',$id);
                    foreach($query1->result() as $row1){

                            $array['comments'] = COUNT($row->comments;


                    }


                 }


            return $array;


    }

我需要幫助,請幫助我...

您不想運行N + 1個查詢。 您可以通過查詢一次性獲得所有必要的數據

SELECT u.id, u.f_name, u.l_name, COUNT(c.id_user) comments_count
  FROM user_details u LEFT JOIN user_comments c
    ON u.id = c.id_user
 GROUP BY u.id, u.f_name, u.l_name

樣本輸出:

| id | f_name | l_name | comments_count |
|----|--------|--------|----------------|
|  1 |   John |    Doe |              4 |
|  2 |   Jane |    Doe |              2 |

這是一個SQLFiddle演示

推薦閱讀:


在Codeigniter中,這轉化為類似於

public function user_details() 
{
    $rows = $this->db
        ->select('u.id', 'u.f_name', 'u.l_name')
        ->select('COUNT(c.id_user) AS comments_count', FALSE)
        ->from('user_details AS u')
        ->join('user_comments AS c', 'u.id = c.id_user', 'left')
        ->group_by('u.id', 'u.f_name', 'u.l_name')
        ->get()
        ->result_array();

    return $rows;
}

暫無
暫無

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

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