質問編集履歴

2

追記

2021/06/02 00:22

投稿

accountinitial
accountinitial

スコア0

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,11 @@
30
30
 
31
31
  ```php
32
32
 
33
- // レポートを作成するユースケース
33
+ // レポートを作成するユースケース
34
+
35
+ class Interactor
36
+
37
+ {
34
38
 
35
39
  public function __construct(ReportRepository $reportRepository)
36
40
 
@@ -86,7 +90,11 @@
86
90
 
87
91
  }
88
92
 
93
+ }
89
94
 
95
+
96
+
97
+ // モデルを永続化するリポジトリ
90
98
 
91
99
  class ChildcareDocumentationRepository
92
100
 

1

追記

2021/06/02 00:22

投稿

accountinitial
accountinitial

スコア0

test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,127 @@
21
21
 
22
22
 
23
23
  ![app](37458ec3751c836d565850d19bac5382.png)
24
+
25
+
26
+
27
+ ### 追記
28
+
29
+
30
+
31
+ ```php
32
+
33
+ // レポートを作成するユースケース
34
+
35
+ public function __construct(ReportRepository $reportRepository)
36
+
37
+ {
38
+
39
+ $this->reportRepository = $reportRepository;
40
+
41
+ }
42
+
43
+
44
+
45
+ public function __invoke(InputData $inputData)
46
+
47
+ {
48
+
49
+ // レポートに紐付けるアクティビティの作成
50
+
51
+ $activities = [];
52
+
53
+ foreach ($inputData->activitiesWithOrder as $activity) {
54
+
55
+ $activities[] = new ActivityWithOrder(
56
+
57
+ new ActivityId() // 新規作成時なので、何も指定できない
58
+
59
+ ...
60
+
61
+ $activity['order']
62
+
63
+ );
64
+
65
+ }
66
+
67
+
68
+
69
+ // アクティビティを持つレポートの作成
70
+
71
+ $report = new Report(
72
+
73
+ new ReportId() // 新規作成時なので、何も指定できない
74
+
75
+ ...
76
+
77
+ new Activities($activities)
78
+
79
+ );
80
+
81
+
82
+
83
+ // 永続化
84
+
85
+ $this->reportRepository->create($report);
86
+
87
+ }
88
+
89
+
90
+
91
+ class ChildcareDocumentationRepository
92
+
93
+ {
94
+
95
+ public function __construct(ActivityRepository $activityRepository)
96
+
97
+ {
98
+
99
+ $this->activityRepository = $activityRepository;
100
+
101
+ }
102
+
103
+
104
+
105
+ // リポジトリ
106
+
107
+ public function create(Report $report)
108
+
109
+ {
110
+
111
+ // レポートの永続化
112
+
113
+ $daoReport = DaoReport::create([
114
+
115
+ ...
116
+
117
+ ]);
118
+
119
+
120
+
121
+ foreach ($report->getActivities() as $activity) {
122
+
123
+ // アクティビティの永続化
124
+
125
+ $daoActivityId = $this->activityRepository->create($activity);
126
+
127
+
128
+
129
+ // Activityリポジトリの保存結果で取得されるIDを用いて中間テーブルに保存
130
+
131
+ $daoReport->activities()->attach([
132
+
133
+ $daoActivityId => $activity->getOrder(),
134
+
135
+ ]);
136
+
137
+ }
138
+
139
+
140
+
141
+ return $daoReport->id;
142
+
143
+ }
144
+
145
+ }
146
+
147
+ ```