回答編集履歴
8
追記
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
PHPのdate()とstrtotime()を併用したらどうでしょう。閏年にも対応しています。
|
2
2
|
それに、カスタマイズも容易です。
|
3
|
+
(追記:ただし、2038年問題には対応していません。DateTimeクラスを使うのがベターです。)
|
3
4
|
|
4
5
|
例えば、次のコードを実行すると、100日前から100日後の日時を表示します。
|
5
6
|
```PHP
|
@@ -36,8 +37,8 @@
|
|
36
37
|
|
37
38
|
// modifiedでグルーピングし、valueの合計を取得
|
38
39
|
$num = $this->Num->find('all', array(
|
39
|
-
'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
|
40
|
+
'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
|
40
|
-
'group' => array('Num.modified')
|
41
|
+
'group' => array('Num.modified')
|
41
42
|
));
|
42
43
|
|
43
44
|
// キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
|
@@ -53,5 +54,5 @@
|
|
53
54
|
$this->set(compact('results'));
|
54
55
|
|
55
56
|
// 連想配列を確認
|
56
|
-
|
57
|
+
dump($results);
|
57
58
|
```
|
7
修正
answer
CHANGED
@@ -50,8 +50,8 @@
|
|
50
50
|
}
|
51
51
|
|
52
52
|
// 連想配列をViewで表示できるようにセット
|
53
|
-
$this->set(compact('
|
53
|
+
$this->set(compact('results'));
|
54
54
|
|
55
55
|
// 連想配列を確認
|
56
|
-
Debugger::dump($
|
56
|
+
Debugger::dump($results);
|
57
57
|
```
|
6
修正
answer
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
```PHP
|
32
32
|
[コントローラー]
|
33
33
|
|
34
|
-
//
|
34
|
+
// sumvalueというバーチャルフィールドを用意
|
35
35
|
$this->Num->virtualFields['sumvalue'] = 0;
|
36
36
|
|
37
37
|
// modifiedでグルーピングし、valueの合計を取得
|
5
修正
answer
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
));
|
42
42
|
|
43
43
|
// キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
|
44
|
-
$results_tmp = Hash::combine($
|
44
|
+
$results_tmp = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue');
|
45
45
|
|
46
46
|
// キーをDATETIMEからDATEに変換
|
47
47
|
$results = [];
|
4
修正
answer
CHANGED
@@ -32,11 +32,11 @@
|
|
32
32
|
[コントローラー]
|
33
33
|
|
34
34
|
// sumというバーチャルフィールドを用意
|
35
|
-
$this->Num->virtualFields['
|
35
|
+
$this->Num->virtualFields['sumvalue'] = 0;
|
36
36
|
|
37
37
|
// modifiedでグルーピングし、valueの合計を取得
|
38
38
|
$num = $this->Num->find('all', array(
|
39
|
-
'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as
|
39
|
+
'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'),
|
40
40
|
'group' => array('Num.modified')
|
41
41
|
));
|
42
42
|
|
3
修正
answer
CHANGED
@@ -41,8 +41,14 @@
|
|
41
41
|
));
|
42
42
|
|
43
43
|
// キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
|
44
|
-
$
|
44
|
+
$results_tmp = Hash::combine($tweet, '{n}.Tweet.modified', '{n}.Tweet.sumvalue');
|
45
45
|
|
46
|
+
// キーをDATETIMEからDATEに変換
|
47
|
+
$results = [];
|
48
|
+
foreach ($results_tmp as $key => $value) {
|
49
|
+
$results[date('Y-m-d', strtotime($key))] = $value;
|
50
|
+
}
|
51
|
+
|
46
52
|
// 連想配列をViewで表示できるようにセット
|
47
53
|
$this->set(compact('modified_sumvalue'));
|
48
54
|
|
2
コード追記
answer
CHANGED
@@ -24,4 +24,28 @@
|
|
24
24
|
2016/02/17 11:12:13
|
25
25
|
2016/01/01 00:00:00
|
26
26
|
2016/12/31 00:00:00
|
27
|
+
```
|
28
|
+
|
29
|
+
コード追記
|
30
|
+
---
|
31
|
+
```PHP
|
32
|
+
[コントローラー]
|
33
|
+
|
34
|
+
// sumというバーチャルフィールドを用意
|
35
|
+
$this->Num->virtualFields['sum'] = 0;
|
36
|
+
|
37
|
+
// modifiedでグルーピングし、valueの合計を取得
|
38
|
+
$num = $this->Num->find('all', array(
|
39
|
+
'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sum'),
|
40
|
+
'group' => array('Num.modified')
|
41
|
+
));
|
42
|
+
|
43
|
+
// キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成
|
44
|
+
$modified_sumvalue = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue');
|
45
|
+
|
46
|
+
// 連想配列をViewで表示できるようにセット
|
47
|
+
$this->set(compact('modified_sumvalue'));
|
48
|
+
|
49
|
+
// 連想配列を確認
|
50
|
+
Debugger::dump($modified_sumvalue);
|
27
51
|
```
|
1
追記
answer
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
例えば、次のコードを実行すると、100日前から100日後の日時を表示します。
|
5
5
|
```PHP
|
6
6
|
<?php
|
7
|
+
// CakePHPでは別途指定するので、いらないかもしれません
|
7
8
|
date_default_timezone_set('Asia/Tokyo');
|
9
|
+
|
8
10
|
$from = -100;
|
9
11
|
$to = 100;
|
10
12
|
for ($i=$from; $i<=$to; $i++) {
|