2011-08-30 2 views
-2

私はCodeigniterを使ってAPIを開発していますが、このAPIではユーザは タグを付けることができます。私は10の最も人気のあるタグ(最も頻繁に使用されるタグ)を表示する必要があります。 どうすればいいですか?最もよく使われている10個のタグを表示

更新

タグテーブルには含まれています

id, user_id, tag, created_at, updated_at 
+0

いくつかのデータベース情報と関連コードを入力してください。 – Tobias

+0

質問が更新されました。 –

+0

まだ何か試しましたか?あなたはどこにいるのですか?あなたはもう少し私たちに行く必要がありますので、SOはコード工場ではありません。 – polarblau

答えて

1

ジョナサン、あなたの設定に応じて、ソリューションは異なるでしょう、私はあなたのテーブル構造のように少し異なるものをお勧めします、あなたはそれを使用することができます。

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

データベースにタグを追加するには: $データ=配列( 'tagNameを' => 'ミスターNiceguy'); $ this-> db-> insert( 'tags' => $ data);

$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'); 

を編集:

ユーザーにタグを追加するには、最も一般的に使用されるタグを受け取るためにモデルに

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

を以下のように使用することができます設定を使用する必要がある場合は、代わりに次のようにしてください:

$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

本当に面白いですね!残念ながら私は自分のDBスキーマを変更することはできません。選択したコードをセットアップで使用するために変更するにはどうすればよいですか? –

+0

編集してください。 – Tobias

+0

ありがとう!しかし、そのクエリは本当にタグテーブルで最も頻繁に使用される10のタグを取得しますか? –

0

あなたがorder_by()group_by()の組み合わせを使用する必要があります。それらをタグ名でグループ化してから、カウント順に並べ替えます。あなたがActiveRecordで数えることができるかどうか分からないので、生のSQLを使う必要があるかもしれません。

関連する問題