根据帖子数获取用户排名(Codeigniter)

时间:2019-03-05 03:20:12

标签: codeigniter

我有许多将内容发布到POSTS表中的用户。

id     user_id     content

1        1       text
2        3       text
3        1       text
4        1       text
5        2       text
6        3       text

现在,我想按最高帖子数(行)获得单个用户排名。我对如何获得结果感到困惑!

3 个答案:

答案 0 :(得分:0)

假设您正在使用查询生成器,则可以从模型中使用以下语句获取所需结果:

$this->db->select('user_id, count(content) as total_posts')
    ->group_by('user_id')
    ->order_by('total_posts', 'DESC')
    ->limit(1)
    ->get('POSTS')
    ->row();

答案 1 :(得分:0)

问题已解决。这是我如何执行此操作的说明:

模型

public function get_user_ranking()
{   

    $this->db->select('user_id, count(id) as total_posts');
    $this->db->group_by('user_id');
    $this->db->order_by('total_posts', 'DESC');
    $query = $this->db->get('posts');
    return $query->result();
}

控制器

$data['user_ranking'] = $this->post_model->get_user_ranking();

视图

$rank = 1; foreach($user_ranking as $row)
{
    if( $row->user_id == $user->id)
    {
        echo $rank;
        break;
    } 
    $rank++;
}

答案 2 :(得分:0)

public function get_user_ranking()
{   

    $this->db->select('user_id, count(id) as total_postings');
    $this->db->from('posts');
    $this->db->group_by('user_id');
    $this->db->order_by('total_posts', 'DESC');
    return $this->db->get()->result();
}