Codeigniter - 只返回我的模型类中的一行

时间:2013-04-14 07:50:20

标签: php mysql codeigniter

我已经写了一个模型代码,我正在加入两个表,并返回我的结果。

我的表中有26个结果,但我提到的代码只返回一行!可能是什么原因?为什么它只返回一行?

请帮我解决这个问题

更新

表格结构

question
-----------
question_id PK Auto_Incr  
question    varchar... 
votes       int


answer
------------
answer_id    PK  Auto_icre
question_id  FK refrences question  
content      longtext

从下面的表结构我的模型代码只显示2个问题计数,跳过最后一个问题,经过一些研究我发现它没有计算我的第三个问题的原因,这是因为它没有我的任何答案answer表。

我想,如果没有答案那么它应该显示特定问题的count = 0,如何解决这个问题?


表数据结构数据:

 question
-----------
 question_id    question          votes
    1           what's name?       0
    2           where you?         3
    3           blah blah          9 

answer 
----------
 answer_id      question_id        content
    4              2                 India
    5              2                 Nepal
    6              2                 Pakistan
    7              1                 Mr Osama Binladan

模型

       public function fetch_allquestions($limit, $start) 
{
    $this->load->database(); 
    $this->db->limit($limit, $start);   
     $this->db->from('question');
    $select =array(
                    'question.*',
                    'userdetails.*',
                    'COUNT(answer.answer_id) AS `Answers`'
            );

    $this->db->select($select);

    $this->db->join('answer','answer.question_id = question.question_id'); 
    $this->db->join('userdetails','userdetails.user_id = question.user_id'); 
     $query = $this->db->get();

    print_r("Number of rows=".$query->num_rows());//showing only One, out of 26 rows


    if ($query->num_rows() > 0)
    {
        foreach ($query->result() as $row)
            {
                $data[] = $row;
            }
            return $data;
    }else{
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

select中有COUNT() sql聚合。由于您没有任何GROUP BY,因此数据库将使用整个结果集作为一个隐式组,从而在计算全部时将结果集减少到一行。这是sql应该如何工作。

您可以在print $this->db->last_query()行之后使用$this->db->get();检出生成的sql查询,然后在sql控制台中运行它以查看发生了什么。

您可能想要添加$this->db->group_by('question.question_id');或类似内容。