CodeIgniter选择数据和计数

时间:2012-03-26 18:02:20

标签: php sql codeigniter activerecord

在CodeIgniter中,我正在做一个选择,检索一些博客帖子。但我也想要一个blogpost与count()函数的总反应。但是当我这样做时,它只返回一条记录。

示例:

    $this->db->select('idee_id, titel, omschrijving, type, top_idee, tbl_users.foto as user_foto');
    $this->db->from('tbl_idee');
    $this->db->join('tbl_types', 'tbl_idee.type_id = tbl_types.type_id');
    $this->db->join('tbl_users', 'tbl_idee.user_id = tbl_users.user_id');
    $this->db->join('tbl_comments', 'tbl_users.user_id = tbl_comments.user_id');
    $this->db->order_by('post_datum', 'DESC');
    $this->db->limit(10);
    $q = $this->db->get();

现在我只得到博客帖子而没有一篇博文的完全反应。 我怎样才能解决这个问题?在选择中选择。?

由于

3 个答案:

答案 0 :(得分:3)

首先,您需要让数据库选择每篇博文的评论数

$this->db->select('idee_id, titel, omschrijving, type, top_idee,
      tbl_users.foto as user_foto, COUNT(*) AS comments',FALSE);

注意第二个参数,它会阻止codeigniter解析COUNT()函数

您正在从博客文章中检索数据及其评论,因此您需要GROUP BY使博客文章独特的数据:

$this->db->group_by('idee_id,titel, omschrijving, type,
      top_idee, tbl_users.foto');

您的查询的其余部分应该是正确的

答案 1 :(得分:0)

如果您知道原始SQL以获取所需的数据。你最好的选择可能是:

$this->db->query('YOUR QUERY HERE');

通过这种方式,您可以自由地构建SQL,而无需使用CI db方法。我希望这有帮助...

答案 2 :(得分:0)

首先检查所有表格。检查所有记录是否有多条记录,因为您正在使用简单的连接查询加入它们如果其中一个记录少于其他记录。然后用户左或右连接查询。

否则你的结果。

$q = $this->db->get();
return $q->result_array();

并计算记录

$q = $this->db->get();
$count = $q->num_rows();

它也会计算您的记录。