Показать 10 наиболее часто используемых тегов - PullRequest
0 голосов
/ 30 августа 2011

Я разрабатываю API с использованием Codeigniter, и в этом API пользователи могут помечать себя самостоятельно.Мне нужно отобразить 10 самых популярных тегов (наиболее часто используемых тегов).Как я могу это сделать?

Обновление

Таблица тегов содержит:

id, user_id, tag, created_at, updated_at

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Джонатан, в зависимости от ваших настроек решение будет отличаться, я собираюсь предложить что-то немного отличное от того, как выглядит ваша таблица, вы можете использовать ее, если хотите.

.--------------.    .-------------.
|   userTags   |    |     tags    |
.--------------.    .-------------.
|  id          |    | id          |
|  user_id     |    | tagName     |
|  tag_id      |    .-------------.
.--------------.

Чтобы добавить тег в вашу базу данных: $ data = array ('tagName' => 'Mr. Niceguy');$ this-> db-> insert ('tags' => $ data);

Чтобы добавить тег для своего пользователя, вы можете использовать следующее в модели

$data = array('user_id' => $uId, 'tag_id' => 1);
$this->db->insert('userTags', $data);

Toполучить наиболее часто используемые теги:

$this->db->select('tag_id');
$this->db->order('tag_id DESC');
$this->db->limit(10);
$this->db->join('tags', 'userTags.tag_id = tags.id');
$this->db->get('userTags');

Редактировать:

Если вам нужно использовать ваши настройки, сделайте это вместо:

$this->db->order_by('count(tag)', 'DESC');
$this->db->group_by('tag', 'DESC');
$tags = $this->db->get('userTags');

foreach($tags->result() as $tag) {
    var_dump($tag->tag);
}
0 голосов
/ 30 августа 2011

Вам нужно будет использовать комбинацию order_by() и group_by().Сгруппируйте их по имени тега, а затем упорядочите по количеству.Я не уверен, что вы можете упорядочить по количеству в ActiveRecord, поэтому вам, возможно, придется использовать необработанный SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...