6月
07
2010
[CakePHP] SUM,MAX,MINの結果を正しい配列形式にする
投稿者: admin, カテゴリ: CakePHP, tags: CakePHP投稿日: 2010.06.07 - 03:57
更新日: 2011.09.18 - 01:35
$deposits = $this->Deposit->find('all', array(
//'fields'=> array('customer_id', "sum(deposit) as sum_deposit"),
'fields'=> array('customer_id', 'SUM(Deposit.deposit) as deposit'),
'group' => array('customer_id'),
));
いろいろ参考サイトから得た情報でやるのだが、以下のようになってしまう。うーん。できるハズなんだがなぁ。
Array ( [0] => Array ( [Deposit] => Array ( [customer_id] => 1 ) [0] => Array ( [deposit] => 200 ) ) [1] => Array ( [Deposit] => Array ( [customer_id] => 2 ) [0] => Array ( [deposit] => 300 ) ) )
これを以下のようにしなければCakePHPらしくない。
スポンサードリンク
Array ( [0] => Array ( [Deposit] => Array ( [customer_id] => 1 [deposit] => 200 ) ) [1] => Array ( [Deposit] => Array ( [customer_id] => 2 [deposit] => 300 ) ) )
/app/app_model.php を設置する
<?php
class AppModel extends Model {
function afterFind($results, $primary=false) {
if($primary == true) {
if(Set::check($results, '0.0')) {
$fieldName = key($results[0][0]);
foreach($results as $key=>$value) {
$results[$key][$this->alias][$fieldName] = $value[0][$fieldName];
unset($results[$key][0]);
}
}
}
return $results;
}
}
?>
参考文献
- Dealing with calculated fields in CakePHP’s find() « nuts and bolts of cakephp :
http://teknoid.wordpress.com/2008/09/29/dealing-with-calculated-fields-in-cakephps-find/
関連記事
- CakePHP 複雑なSQLクエリ
- CakePHP pagenatorのメモ
- [CakePHP] 命名規則に従った名前を教えてくれそうなスクリプト
- CakePHP – ACL再入門(2)
- CakePHP htmlヘルパー inputメモ
- [CakePHP] テストアプリケーションのブログを構築 – test_apps_posts
- CakePHP – ACL(1)
スポンサードリンク
エントリ (RSS)
‘fields’=> array(‘customer_id’, ‘SUM(Deposit.deposit) as deposit’
を
‘fields’=> array(‘customer_id’, ‘SUM(Deposit.deposit) as Deposit.deposit’
でうまくいきませんかね?
コメントありがとうございます。
テスト環境が手元にないので、次の機会に試させていただきます。