QA@IT

Cakephpでランキング機能の作成方法について。

3478 PV

Cakephpでランキング機能の作成方法について。
Cakephpで、お気に入り数順のランキング機能を作りたいと考えています。
以下のような構造でランキングを表示させたいのですが、
やり方が分からず困っています。

■システム概要
コーヒーの紹介サイトです。
様々なコーヒーが登録されており、ユーザーは任意のコーヒーをお気に入り登録できます。

Coffeeテーブル
id , name

Userテーブル
id , name

Favoriteテーブル
id , coffee_id , user_id

現在、ランキングを表示させたいページであるindex.ctpには、$this->Coffee->find();でCoffeeの情報を表示させています。
アソシエーションでUserテーブル、Favoriteテーブルの情報も取れていますが、これをお気に入り数順にソートするやり方がわかりません。宜しくお願いします。

回答

できました!ありがとうございました。

編集 履歴 (0)
  • 解決であれば質問が完了済みにならないので回答のAcceptをお願いします。 -

http://book.cakephp.org/2.0/ja/models/retrieving-your-data.html#find-count

    $publishedAuthors = $this->Article->find('count', array(
       'fields' => 'DISTINCT Article.user_id',
       'conditions' => array('Article.status !=' => 'pending')
    ));

この DISTINCTでcountする例を参考に Favoriteをuser_idでDISTINCTしたカウントをとれば(並び変わってませんが)カウントの一覧はとれるのではないでしょうか。
'count'の時に条件にorderが指定できるかどうかわかりませんが、一緒にuser_idでorderできればそれだけで解決しそうですね。

指定できない場合は自前で並びかえるのかな?

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。