php - 如何从 codeigniter 中的三个表中检索数据以获得完整 View

标签 php mysql codeigniter

我是 codeigniter 和 php 的新手。我的DB 中有两个表,我需要做的是从表user_details、user_comments 中检索数据。

user_details 的

id 与 user_comments 中的 id_user 相同。

我想在我的 View 中显示一些输出,因为没有条件,我需要所有用户列表,其中包含 first_name,last_name from user_detailsnumber of comment by user from 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 |

Here is a SQLFiddle demo

Recommended reading:


In Codeigniter this translates to something along the lines of

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

关于php - 如何从 codeigniter 中的三个表中检索数据以获得完整 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29722641/

相关文章:

php - 如何在二维数组中不重复值的情况下在另一个循环内创建一个循环

php - SQL:如何在 SQL 中过滤 (WHERE) 联接 (ON) 表?

javascript - 如何使用 Javascript 访问 CodeIgniter session cookie?

php - 一个查询插入多行多列

javascript - Angular/Laravel CORS 问题 : The Same Origin Policy disallows reading the remote resource

php - Apache - PHP 文件返回黑色,php 文件显示中甚至没有 HTML

mysql - 将日期转换为 mysql 中的数字(就像日期在 Excel 中的转换方式)

MySQL 怪异的 float 和小数点行为

mysql - 访问mysql中的计数值

php - foreach INSERT 到 Mysql DB 中非常慢,特别是在插入超过 100K 条记录时