Codeigniter结果数组只返回一行

时间:2011-08-14 11:40:18

标签: php sql codeigniter

尝试将数组编码为json以与jquery一起使用。 这是我的模型中的函数

function get_latest_pheeds() {
        $this->load->helper('date');
         $time = time();
         $q = $this->db->select("user_id,pheed_id,pheed,datetime,COUNT(pheed_comments.comment_id) as comments")
                        ->from('pheeds')
                        ->join('pheed_comments','pheed_comments.P_id=pheeds.pheed_id','left')
                        ->group_by('pheed_id')
                        ->order_by('datetime','desc')
                        ->limit(30);
        $rows = $q->get();
            foreach($rows->result_array() as $row) {
                $data['user_id'] = $row['user_id'];
                $data['pheed_id'] = $row['pheed_id'];
                $data['pheed'] = $row['pheed'];
                $data['comments'] = $row['comments'];
                $data['datetime'] = timespan($row['datetime'],$time);
            }
            return $data;
     }

这是我的控制器

function latest_pheeds() {
            if($this->isLogged() == true) {
            $this->load->model('pheed_model');
            $data = $this->pheed_model->get_latest_pheeds();

                echo json_encode($data);

            return false;
        }
    }

当我在浏览器中运行代码时,它只返回数据库中的一行。 请帮帮我

2 个答案:

答案 0 :(得分:2)

你在每次迭代中覆盖数据!!

使用类似

的内容
    $data[] = array(
    'user_id' => $row['user_id'];
    'pheed_id' => $row['pheed_id']; 
    'pheed' => $row['pheed'];
    'comments' => $row['comments'];
    'datetime' => timespan($row['datetime'],$time); 
    ) ;

答案 1 :(得分:0)

这很好,但您的语法应为'user_id' => $ row ['user_id'] ,用于数组的每个元素