cakephp で GROUP BY や SUM,COUNT とかを取る場合のバーチャルフィールド(virtual fields)利用

cakephp で GROUP BY や SUM,COUNT とかを取る場合のバーチャルフィールド(virtual fields)利用すると
普通にやると配列がsumとかcountのとこだけ、モデルの中に入らずに 0 とかになる。

select user_id, sum(point) as point from points group by user_id;


Array
(
[0] => Array
(
[Point] => Array
(
[user_id] => 111
)

[0] => Array
(
[Point__point] => 500
)

)

[1] => Array
(
[Point] => Array
(
[user_id] => 141
)

[0] => Array
(
[Point__point] => 500
)

)

)


これは、モデルにバーチャルカラムを追加するとうまくいく。

$this->Model->virtualFields['point'] = 0;
return $this->Model->find('all',
array(
'fields' => array(
'Model.user_id',
'sum(Model.point) as Model__point',
),
'conditions' => $conditions,
'group' => array('Model.user_id'),
)
);

ちゃんとこうなる。

Array
(
[0] => Array
(
[Point] => Array
(
[user_id] => 111
[point] => 500
)

)

[1] => Array
(
[Point] => Array
(
[user_id] => 141
[point] => 500
)

)

)


参考サイト

cakephp で GROUP BY や SUM,COUNT とかを取る場合のバーチャルフィールド(virtual fields)利用
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret


プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事