« CakePHP 1.2でGROUP BY開発合宿2日目 »

開発合宿3日目

開発合宿3日目

パーマリンク 2008/09/15 23:00:00 著者: kumaold メール
カテゴリ: 勉強会など, PHP

今日は二度寝する間もなく気づいたら8時半で、眠い中起きました。


合宿最終日、ということで今日こそそれなりに仕上げないといけません。

まずは持ち越し課題のデータ取得を、一覧ページを開いた時点でDBにデータが無かったら取得してくるようにし、自然に解析が出来るようにしました。


しかし解析データ追加ページでSQLエラーが出てしまいます。
データ追加自体はできているのでいいんですが、エラーが出ているというのはあまり気持ちのいいものではありません。


エラーを見ていると『duplicate key value violates unique constraint "ips_pkey"』と出て、何故か2重にINSERTが実行されてしまっている状況です。

一瞬出て消えるもう1つのエラーで存在しない「nextval(ips_id_seq)」とか実行されていることをみると、主キーがデフォルトのidでないのが原因のようでした。


そこでモデル内に主キーを設定する一文を追加し、解決しました。

var $primaryKey = 'ip';


最後に、解析・統計ができないと意味がないのでとりあえず実装してみました。


出力結果的にはこんなことがやりたかったわけですが、CakePHPには残念ながらそれが一発でできる関数がないんですよ。

アクセス元ホストアクセス数集計
OCN119
Yahoo! BB49
DION46


find('all')一覧出力+find('count')合計出力でfind('countAll')とか欲しいのに。

要はSQL文で GROUP BY の COUNT(*) すればいいだけなので、find('all')の条件式に無理矢理埋め込んでみました。

$conds = array(
    'fields' => 'Host.org, COUNT(*) AS "Count__org"',
    'conditions' => 'GROUP BY Host.org',
    'order' => 'Count__org DESC'
);


SQL文を直接叩いた方が綺麗な気がするが、まあ動くので良しとしよう。



改訂新版 SQLポケットリファレンス (Pocket reference)改訂新版 SQLポケットリファレンス (Pocket reference)
朝井 淳

技術評論社 2003-06-10
売り上げランキング : 37949
おすすめ平均

Amazonで詳しく見る
type="text/javascript" src="http://www.ad16.jp/socailmedia.php?a=CCBot%2F2.0+%28http%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&u=http%3A%2F%2Fkuroutoshikou.blog16.jp%2Findex.php%2F2008%2F09%2F15%2Fe_c_oa_ari3a_yc_r" charset="EUC-JP">

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年4月
 << <   > >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

検索

XMLフィード

16ブログ     powered by b2evolution