Я довольно новичок в PHP и CodeIgniter, поэтому прошу прощения за то, что я опубликовал такой элементарный вопрос!
У меня есть система на моем веб-сайте, где пользователи могут оценивать игры из 10. Эти оценки хранятся в таблице с именем game_vote, в которой есть столбцы id, game_id, user_id и Score, так что это относительно просто.
Что я хотел бы сделать, так это вернуть 5 лучших результатов за игру. Поэтому я думаю, что мне нужно получить средний балл для каждого game_id, упорядочить эти средние в порядке убывания, а затем ограничить мои результаты до 5.
Вот мой контроллер:
function get_all_game_ratings()
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->from('game_vote');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->group_by('game_vote.game_id');
$this->db->where('game_vote.game_id', 2);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->select_avg('game_vote.score');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->from('game_vote');
$this->db->where('game_vote.game_id', $row->game_id);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
}
}
Мне кажется, что я на правильном пути.
Заранее спасибо за любую помощь в этом.
Ура!
[РЕДАКТИРОВАТЬ] И ЗДЕСЬ ЗАВЕРШЕННАЯ ФУНКЦИЯ В СЛУЧАЕ, В КОТОРОМ НУЖНО НУЖНО ЭТО В БУДУЩЕМ. :)
function get_user_ratings($limit)
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->select_avg('game_vote.score');
$this->db->group_by('game_vote.game_id');
$this->db->from('game_vote');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->order_by('AVG(game_vote.score)', 'desc');
$this->db->limit($limit);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}