[英]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.