Получить рейтинг пользователей по количеству постов (Codeigniter) - PullRequest
0 голосов
/ 05 марта 2019

У меня есть несколько пользователей, которые публикуют контент в таблице 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 голосов
/ 05 марта 2019

Проблема была решена.Вот объяснение того, как я это сделал:

модель

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++;
}
0 голосов
/ 05 марта 2019
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();
}
0 голосов
/ 05 марта 2019

Предполагая, что вы используете построитель запросов, из модели вы можете использовать следующий оператор для получения требуемого результата:

$this->db->select('user_id, count(content) as total_posts')
    ->group_by('user_id')
    ->order_by('total_posts', 'DESC')
    ->limit(1)
    ->get('POSTS')
    ->row();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...