« JSPでデータベース開発合宿3日目 »

CakePHP 1.2でGROUP BY

CakePHP 1.2でGROUP BY

パーマリンク 2008/09/16 19:53:48 著者: kumaold メール
カテゴリ: プログラミング, PHP, CakePHP

昨日無理矢理書いたアクセス解析集計ページのfind()の条件指定をもう少しスマートに書けないかと調べてみました。

まず、1.1との互換性の関係で古い書き方も許されていたため中途半端なfind()の条件指定になってしまったので、ここでひとつ統一したいと思います。


'fields'には、必要なフィールドを配列で区切って渡します。
'order'も同様、連想配列で分けて渡します。


今まで直接書けなかったGROUP BYですが、1.2 RC1(?)あたりから'group'という項目が追加されたようです。

そのおかげで'conditions'に無理に書いていたのが直接書くことができました。
 
 

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

これを新CakePHP 1.2流の書き方に直してみたのがこちら。

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

訂正: groupに配列で値を入れるとエラーになります

断片的にSQL文の一部が隠れていたものが、スマートになりました。

知っていると得することも結構ありますね。
新リリース(次はRC3?)が出たら一通りの変更点を調べておくといいです。



CakePHP ポケットリファレンス (Pocket Reference)CakePHP ポケットリファレンス (Pocket Reference)
株式会社ブルーオーシャン 岡田 佳典

技術評論社 2008-06-18
売り上げランキング : 27145
おすすめ平均

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%2F16%2Fcakephp_1_2a_sgroup_by" 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 free blog software