質問編集履歴

13

質問の改善

2021/05/24 06:06

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
 
102
102
 
103
- 最終目的としましては、日付(重複なし)の数を足した合計値をユーザーの累計投稿日数として表示したいと考えております。
103
+ 最終目的としましては、重複なしの日付単位で投稿データの合計値をユーザーの投稿累計日数として表示したいと考えております。
104
104
 
105
105
 
106
106
 

12

質問の改善

2021/05/24 06:06

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,19 @@
100
100
 
101
101
 
102
102
 
103
- 最終目的としましては、作成したメソッドから得られる合計値を、リレーションしているユーザーの投稿している日数の合計値として使用したいと考えております。
103
+ 最終目的としましては、日付(重複な)の数を足した合計値をユーザーの累計投稿日数として表示したいと考えております。
104
+
105
+
106
+
107
+ 例えば、ログインしているユーザーが、2021-05-18、2021-05-19、2021-05-20という日付データを保持している投稿を各日付ごとに2つずつ投稿していると仮定します。
108
+
109
+
110
+
111
+ このような場合、articlesテーブルでは、2021-05-18、2021-05-19、2021-05-20の投稿データが各2つずつ存在しているのでデータ数としては6つあることになると思います。
112
+
113
+
114
+
115
+ 重複なしの日付単位で考えるとユーザーが投稿しているデータは3つになると思います。この重複なしの日付単位で数えた投稿データ数をユーザーの累計投稿日数として扱いたく、累計投稿日数3日という数をarticlesテーブルから取得したいと思い、上記のようなコードを作成致しました。
104
116
 
105
117
 
106
118
 

11

質問の改善

2021/05/24 06:00

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -94,13 +94,13 @@
94
94
 
95
95
  ```
96
96
 
97
- 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、created_atカラム(日付データ)の総件数を取得したいと思い、日付データの重複をなくす為に、時刻を削除したフォーマット(年/月/日の状態)に変更した後に``array_unique()``で重複を削除、そして``count()``で合計値を取得すると考え作成しました。
97
+ 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、created_atカラム(日付データ)の合計値を取得したいと思い、日付データの重複をなくす為に、繰り返し処理で時刻を削除したフォーマット(年/月/日の状態)に変更した後に``array_unique()``で重複を削除、そして``count()``で合計値を取得すると考え作成しました。
98
98
 
99
99
 
100
100
 
101
101
 
102
102
 
103
- 最終目的としましては、作成したメソッドから得られる総件数を、リレーションしているユーザーの投稿している日数の合計値として使用したいと考えております。
103
+ 最終目的としましては、作成したメソッドから得られる合計値を、リレーションしているユーザーの投稿している日数の合計値として使用したいと考えております。
104
104
 
105
105
 
106
106
 

10

質問の改善

2021/05/24 03:47

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,9 @@
94
94
 
95
95
  ```
96
96
 
97
- 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、created_atカラム(日付データ)の総件数を取得したいと思い作成しました。日付データの重複をなくす為に、時刻を削除したフォーマットに変更して
97
+ 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、created_atカラム(日付データ)の総件数を取得したいと思い日付データの重複をなくす為に、時刻を削除したフォーマット(年/月/日の状態)に変更した後に``array_unique()``で重複を削除、そし``count()``で合計値を取得すると考え作成しした
98
+
99
+
98
100
 
99
101
 
100
102
 

9

質問の改善

2021/05/24 03:44

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  ```
96
96
 
97
- 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、データの総件数を取得したいと思い作成しました。日付データの重複をなくす為に、時刻を削除したフォーマットに変更しています。
97
+ 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、created_atカラム(日付データ)の総件数を取得したいと思い作成しました。日付データの重複をなくす為に、時刻を削除したフォーマットに変更しています。
98
98
 
99
99
 
100
100
 

8

質問の改善

2021/05/24 03:38

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  {
16
16
 
17
- // あるテーブルからcreated_atカラムを指定して全件取得(all()で配列化)
17
+ // articlesテーブルからcreated_atカラムを指定して全件取得(all()で配列化)
18
18
 
19
19
  $created_at_columns = $this->select('created_at')->get()->all();
20
20
 

7

質問の改善

2021/05/24 03:36

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -30,13 +30,17 @@
30
30
 
31
31
  }
32
32
 
33
- // 重複しているデータを除外
33
+ // 重複しているデータ(日付)を除外
34
34
 
35
- $unique_array = array_unique($created_at);
35
+ $unique_created_at = array_unique($created_at);
36
36
 
37
+ // 重複なしのデータ(日付)を数える
37
38
 
39
+ $count_created_at = count($unique_created_at);
38
40
 
41
+ // 合計値をコントローラーに渡す
42
+
39
- return $unique_array;
43
+ return $count_created_at;
40
44
 
41
45
  }
42
46
 
@@ -44,7 +48,17 @@
44
48
 
45
49
  ```
46
50
 
47
- created_atカラムの制約は下記のようになっています。
51
+ ###articlesテーブルの構造とcreated_atカラムの情報
52
+
53
+ articlesテーブル
54
+
55
+ |id|user_id|body|created_at|updated_at|
56
+
57
+ |:--|:--:|--:|--:|--:|
58
+
59
+ |1|1|テスト|2021-05-18 11:02:38|2021-05-18 11:02:38|
60
+
61
+
48
62
 
49
63
  ```
50
64
 
@@ -52,17 +66,49 @@
52
66
 
53
67
  ```
54
68
 
69
+
70
+
55
- 上記のコードは、articlesテーブルからcreated_atカラムのデータを日付重複なし取得したいと思い作成しました。
71
+ ###取得結果(dd()確認)
56
72
 
57
73
 
58
74
 
59
- articleテーブルの特定カラム(created_at)を指定後、コレクションを配列化してデータを全件取得。
75
+ created_atカラムの日付データのフォーマット変更時と変更後、重複している日付データの削除後の合計値dd()で確認
60
76
 
77
+ ```
78
+
61
- 取得した分だけ繰り返し処理で、日付のフォーマット変更して空配列に格納後、重複しているデータ(日付)を除外しています。
79
+ //フォーマット変更成功
80
+
81
+ array:2 [▼
82
+
83
+ 0 => "2021_05_18"
84
+
85
+ 1 => "2021_05_22"
86
+
87
+ ]
62
88
 
63
89
 
64
90
 
91
+ //count()で合計値の取得成功
92
+
93
+ 2
94
+
95
+ ```
96
+
97
+ 上記のメソッドは、articlesテーブルからcreated_atカラムの日付データを日付重複なしで取得後、データの総件数を取得したいと思い作成しました。日付データの重複をなくす為に、時刻を削除したフォーマットに変更しています。
98
+
99
+
100
+
65
- 全件データを取得して、その件数繰り返処理を行うことが非常に効率が悪いと思っているのですが、私自身の力では改善策が浮かびませんでした。
101
+ 最終目的とまし作成したメソッドから得られる総件数を、リレーションしているユーザー投稿している日数合計値とて使用しいと考えております
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+ 投稿している日数の合計値を表示したいユーザーとリレーションしているarticlesテーブルのcreated_atカラムを、一旦全て取得してその件数分の繰り返し処理で、取得したcreated_atカラムの日付データのフォーマットを変更していることが非常に効率が悪いと思っています。私自身の力ではこのコードに対する改善策が思いつきませんでした。
110
+
111
+
66
112
 
67
113
  上記コードの改善点、間違い等のアドバイスをいただきたく存じます。
68
114
 

6

質問の改善

2021/05/24 03:31

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ###改善の余地があるか知りたいコード(ArticleModelに書いています)
1
+ ###改善の余地があるか知りたいコード
2
2
 
3
3
 
4
4
 

5

質問の改善

2021/05/24 02:39

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -78,7 +78,7 @@
78
78
 
79
79
  私、独学で学習しておりまして、学習してきたことが正しくないと言われどの箇所が間違っているのか分からない状態です。
80
80
 
81
- 基礎固めからやり直したいと思っておりますので、もし可能であれば少し具体的に間違いをご指摘いただきたく存じます。
81
+ 指摘を真摯に受け止め、基礎固めからやり直したいと思っておりますので、もし可能であれば少し具体的に間違いをご指摘いただきたく存じます。
82
82
 
83
83
 
84
84
 

4

質問の改善

2021/05/24 02:38

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  ###追記
76
76
 
77
- 回答欄にて、上記のコードは全て間違っているとのご指摘を受けました。
77
+ 回答者様から、上記のコードは全て間違っているとのご指摘を受けました。
78
78
 
79
79
  私、独学で学習しておりまして、学習してきたことが正しくないと言われどの箇所が間違っているのか分からない状態です。
80
80
 

3

質問の改善

2021/05/24 02:35

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,11 @@
52
52
 
53
53
  ```
54
54
 
55
+ 上記のコードは、articlesテーブルからcreated_atカラムのデータを日付重複なしで取得したいと思い作成しました。
56
+
57
+
58
+
55
- articleテーブルから特定カラム(created_at)を指定後、コレクションを配列化してデータを全件取得。
59
+ articleテーブル特定カラム(created_at)を指定後、コレクションを配列化してデータを全件取得。
56
60
 
57
61
  取得した分だけ繰り返し処理で、日付のフォーマットを変更して空配列に格納後、重複しているデータ(日付)を除外しています。
58
62
 
@@ -60,7 +64,7 @@
60
64
 
61
65
  全件データを取得して、その件数分の繰り返し処理を行うことが非常に効率が悪いと思っているのですが、私自身の力では改善策が浮かびませんでした。
62
66
 
63
- 上記コードよりも効率良くデータを取得できる方法がござましたら、アドバイスをいただきたく存じます。
67
+ 上記コードの改善点、間違等のアドバイスをいただきたく存じます。
64
68
 
65
69
 
66
70
 
@@ -72,9 +76,9 @@
72
76
 
73
77
  回答欄にて、上記のコードは全て間違っているとのご指摘を受けました。
74
78
 
75
- 現在、独学で学習している身でして、学習してきたことが正しくないと言われ上記コードのどの箇所が間違っているのか分からない状態です。
79
+ 、独学で学習しておりまして、学習してきたことが正しくないと言われどの箇所が間違っているのか分からない状態です。
76
80
 
77
- 基礎からやり直したいと思っておりますので、もし可能であれば少し具体的に間違いをご指摘いただきたく存じます。
81
+ 基礎固めからやり直したいと思っておりますので、もし可能であれば少し具体的に間違いをご指摘いただきたく存じます。
78
82
 
79
83
 
80
84
 

2

質問の改善

2021/05/24 02:30

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
 
4
4
 
5
5
  ```php
6
+
7
+ class Article extends Model
8
+
9
+ {
10
+
11
+
6
12
 
7
13
  public function countArticleDate()
8
14
 
@@ -34,6 +40,8 @@
34
40
 
35
41
  }
36
42
 
43
+ }
44
+
37
45
  ```
38
46
 
39
47
  created_atカラムの制約は下記のようになっています。
@@ -60,6 +68,20 @@
60
68
 
61
69
 
62
70
 
71
+ ###追記
72
+
73
+ 回答欄にて、上記のコードは全て間違っているとのご指摘を受けました。
74
+
75
+ 現在、独学で学習している身でして、学習してきたことが正しくないと言われ上記コードのどの箇所が間違っているのか分からない状態です。
76
+
77
+ 基礎からやり直したいと思っておりますので、もし可能であれば少し具体的に間違いをご指摘いただきたく存じます。
78
+
79
+
80
+
81
+ 何卒、よろしくお願い致します。
82
+
83
+
84
+
63
85
 
64
86
 
65
87
 

1

質問の改善

2021/05/24 02:00

投稿

yuina711
yuina711

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ###改善の余地があるか知りたいコード
1
+ ###改善の余地があるか知りたいコード(ArticleModelに書いています)
2
2
 
3
3
 
4
4
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  ```
46
46
 
47
- DBから特定のカラム(created_at)を指定後、コレクションを配列化してデータを全件取得。
47
+ articleテーブルから特定のカラム(created_at)を指定後、コレクションを配列化してデータを全件取得。
48
48
 
49
49
  取得した分だけ繰り返し処理で、日付のフォーマットを変更して空配列に格納後、重複しているデータ(日付)を除外しています。
50
50