回答編集履歴

8

追記

2016/01/27 09:36

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -1,6 +1,8 @@
1
1
  PHPのdate()とstrtotime()を併用したらどうでしょう。閏年にも対応しています。
2
2
 
3
3
  それに、カスタマイズも容易です。
4
+
5
+ (追記:ただし、2038年問題には対応していません。DateTimeクラスを使うのがベターです。)
4
6
 
5
7
 
6
8
 
@@ -74,9 +76,9 @@
74
76
 
75
77
  $num = $this->Num->find('all', array(
76
78
 
77
- 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
79
+ 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
78
80
 
79
- 'group' => array('Num.modified')
81
+ 'group' => array('Num.modified')
80
82
 
81
83
  ));
82
84
 
@@ -108,6 +110,6 @@
108
110
 
109
111
  // 連想配列を確認
110
112
 
111
- Debugger::dump($results);
113
+ dump($results);
112
114
 
113
115
  ```

7

修正

2016/01/27 09:36

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -102,12 +102,12 @@
102
102
 
103
103
  // 連想配列をViewで表示できるようにセット
104
104
 
105
- $this->set(compact('modified_sumvalue'));
105
+ $this->set(compact('results'));
106
106
 
107
107
 
108
108
 
109
109
  // 連想配列を確認
110
110
 
111
- Debugger::dump($modified_sumvalue);
111
+ Debugger::dump($results);
112
112
 
113
113
  ```

6

修正

2016/01/21 23:07

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
 
66
66
 
67
- // sumというバーチャルフィールドを用意
67
+ // sumvalueというバーチャルフィールドを用意
68
68
 
69
69
  $this->Num->virtualFields['sumvalue'] = 0;
70
70
 

5

修正

2016/01/21 00:12

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  // キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
86
86
 
87
- $results_tmp = Hash::combine($tweet, '{n}.Tweet.modified', '{n}.Tweet.sumvalue');
87
+ $results_tmp = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue');
88
88
 
89
89
 
90
90
 

4

修正

2016/01/21 00:03

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  // sumというバーチャルフィールドを用意
68
68
 
69
- $this->Num->virtualFields['sum'] = 0;
69
+ $this->Num->virtualFields['sumvalue'] = 0;
70
70
 
71
71
 
72
72
 
@@ -74,7 +74,7 @@
74
74
 
75
75
  $num = $this->Num->find('all', array(
76
76
 
77
- 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sum'),
77
+ 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
78
78
 
79
79
  'group' => array('Num.modified')
80
80
 

3

修正

2016/01/20 23:41

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -84,7 +84,19 @@
84
84
 
85
85
  // キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
86
86
 
87
- $modified_sumvalue = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue');
87
+ $results_tmp = Hash::combine($tweet, '{n}.Tweet.modified', '{n}.Tweet.sumvalue');
88
+
89
+
90
+
91
+ // キーをDATETIMEからDATEに変換
92
+
93
+ $results = [];
94
+
95
+ foreach ($results_tmp as $key => $value) {
96
+
97
+ $results[date('Y-m-d', strtotime($key))] = $value;
98
+
99
+ }
88
100
 
89
101
 
90
102
 

2

コード追記

2016/01/20 03:37

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -51,3 +51,51 @@
51
51
  2016/12/31 00:00:00
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ コード追記
58
+
59
+ ---
60
+
61
+ ```PHP
62
+
63
+ [コントローラー]
64
+
65
+
66
+
67
+ // sumというバーチャルフィールドを用意
68
+
69
+ $this->Num->virtualFields['sum'] = 0;
70
+
71
+
72
+
73
+ // modifiedでグルーピングし、valueの合計を取得
74
+
75
+ $num = $this->Num->find('all', array(
76
+
77
+ 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sum'),
78
+
79
+ 'group' => array('Num.modified')
80
+
81
+ ));
82
+
83
+
84
+
85
+ // キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
86
+
87
+ $modified_sumvalue = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue');
88
+
89
+
90
+
91
+ // 連想配列をViewで表示できるようにセット
92
+
93
+ $this->set(compact('modified_sumvalue'));
94
+
95
+
96
+
97
+ // 連想配列を確認
98
+
99
+ Debugger::dump($modified_sumvalue);
100
+
101
+ ```

1

追記

2016/01/19 03:42

投稿

coba-coba
coba-coba

スコア1409

test CHANGED
@@ -10,7 +10,11 @@
10
10
 
11
11
  <?php
12
12
 
13
+ // CakePHPでは別途指定するので、いらないかもしれません
14
+
13
15
  date_default_timezone_set('Asia/Tokyo');
16
+
17
+
14
18
 
15
19
  $from = -100;
16
20