我有许多将内容发布到POSTS表中的用户。
id user_id content
1 1 text
2 3 text
3 1 text
4 1 text
5 2 text
6 3 text
现在,我想按最高帖子数(行)获得单个用户排名。我对如何获得结果感到困惑!
答案 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();
}