20second timeout

2008年3 月02日

スタッツ見ようぜ!(CakePHPの修行#4)

Posted by: Shu-K In: ぷろぐらむ

気合を入れてデータベースの変更に取り掛かる。

まずはplayersにチーム項目を追加。teamsのテーブルにはチームスタッツを入れていくということでファイナルアンサー。$belongsToなどは使用しない方向に決めました。そしてstatsテーブルを追加しました。
/stats/とURLを入力してアクセス。途中の作業は省きます。とりあえず$scaffoldを入れて確認。

list_stats.jpg
お~、しっかりでとる。(ついでにリン、マット、ジェフを入れておいた)
簡単に説明すると頭の06ってのは05-06シーズンのことです。あとはバスケ知ってる人ならわかるスタッツの名前になっています。avgは平均の数字です。

よし、得点の多い順番に並べてみよう。URLは/stats/avgpts/ってな感じ。ここでは$scaffoldが面倒を見てくれないようなので自前でavgpts.thtmlを用意。/cake/app/views/stats/にぶっこみます。

statsコントローラー
function avgpts() {
$this->set('stats', $this->Stat->findAll(null, null, 'Stat.avg06pt DESC'));
}

avgpts.thtmlを作って適当にタグを埋め込みます。
結果はどうなったかというと・・・

stats_avgpts.jpg
上手く表示できた!!

でも実はこれかなり試行錯誤したんです。DESC(降順)だと上手くいったんですけど、ASC(昇順)だと数字がバラバラに・・・(;;)どうやらデータベースの設定が原因だったようです。MySQLで数字を打ち込んでいるところのフィールドがVARCHARつまり文字列として認識させていたわけですね。これだと桁が同じ時(例:10.02と15.03)は上手く作動してくれるんだけど、桁が違ってくる時(例:10.02と5.21)は順番がバラバラになっちゃう。

そこでググってたら出てきたこちら(MySQLについて 参)を参考にして、打ち込んだ数字を文字列じゃなくて数字列として扱うフィールドに変更しました。合っているのかは不安なんですが、現在は整数のスタッツのところにはINTで、小数点の入るスタッツにはFLOATを入れました。これでDESCした結果が上のキャプ画像になっています。

stats_avgpts_asc.jpg
失敗していたASCもちゃんと表示されました。

モデルの関数で参考にしたのはこちら(CakePHP モデルの関数 findAll「どうにかなるBLOG様」)。例がとてもわかりやすかった(^^ これのおかげで、「何試合以上出ていないと」っていう条件を入れ込むことが出来るようになった。

No Responses to "スタッツ見ようぜ!(CakePHPの修行#4)"

コメントフォーム


  • Shu-K: RINGさん まだ出来たばかりのチームだからこそ、ある程度の妥協しないといけない部分があるはずなんですけど
  • Shu-K: マクムードさん おっと!ついにで生タブセですか。采配がどうたったとか詳しいレポートを期待してますよ(
  • RING: 大変驚きました。 運良く栃木の試合も数試合観戦することが出来ましたが 伝えられてる信頼関係なのだとし

Flickr PhotoStream

  • 15490146_1
  • 15282572_1
  • 15487385_1
  • 14289015_1

About

そっとお休みを取るブログ。20秒だけのお休み。あぁ、まったりペース。