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)利用
スポンサーサイト

jQueryでスムーススクロール

とても簡単にスムーズスクロールが実装出来た。

$(function(){
// #で始まるアンカーをクリックした場合に処理
$('a[href^=#]').click(function() {
// スクロールの速度
var speed = 400;// ミリ秒
// アンカーの値取得
var href= $(this).attr("href");
// 移動先を取得
var target = $(href == "#" || href == "" ? 'html' : href);
// 移動先を数値で取得
var position = target.offset().top;
// スムーススクロール
$($.browser.safari ? 'body' : 'html').animate({scrollTop:position}, speed, 'swing');
return false;
});
});


jquery読み込んで、上記を実行させるだけ。
リンクタグでhref="#"みたいに、#からはじまる奴だけ選んで、勝手に実行してくれる。

参考サイト

jQueryでスムーススクロール

プロフィール

U2K

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

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事