質問編集履歴
1
ご質問のレベルに達していないロジックだったので大幅に修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,50 +4,144 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
|
8
|
+
|
7
|
-
|
9
|
+
カートの内容を確定時にテキストに書き出すロジックを、
|
8
10
|
|
9
11
|
「src\Eccube\Controller\ShoppingController.php」の
|
10
12
|
|
11
|
-
「public function co
|
13
|
+
「public function checkout(Request $request)」内の
|
12
14
|
|
13
|
-
に
|
15
|
+
カート削除前に実装しました。
|
14
16
|
|
15
17
|
|
16
18
|
|
17
|
-
|
19
|
+
```PHP
|
18
20
|
|
19
|
-
|
21
|
+
// csvへの出力処理
|
20
22
|
|
23
|
+
try {
|
24
|
+
|
25
|
+
//カートサービスよりカート情報を取得
|
26
|
+
|
27
|
+
$cartData = $this->cartService->getCart();
|
28
|
+
|
29
|
+
//カート情報よりアイテム取得
|
30
|
+
|
31
|
+
$cartItems = $cartData->getItems();
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
// 受注保存用ファイルオープン
|
36
|
+
|
21
|
-
$a
|
37
|
+
$fhandle = fopen( $Order->getOrderNo()."_juchu_comp.csv", "a");
|
22
38
|
|
23
39
|
|
24
40
|
|
25
|
-
|
41
|
+
if ($fhandle === false) {
|
26
42
|
|
27
|
-
|
43
|
+
log_error('[注文処理] 保存エラーが発生しました.');
|
28
44
|
|
29
|
-
|
45
|
+
$this->entityManager->rollback();
|
46
|
+
|
47
|
+
return $this->redirectToRoute('shopping_error');
|
48
|
+
|
49
|
+
}
|
50
|
+
|
51
|
+
$outDateShare = $cartData->getCustomer()->getId().',';
|
52
|
+
|
53
|
+
$outDateShare .= $cartData->getCustomer()->getName01().',';
|
54
|
+
|
55
|
+
$outDateShare .= $cartData->getCustomer()->getEmail().',';
|
30
56
|
|
31
57
|
|
32
58
|
|
33
|
-
|
59
|
+
foreach ($cartItems as $cartitem) {
|
34
60
|
|
35
|
-
|
61
|
+
$outData = $outDateShare;
|
36
62
|
|
37
|
-
|
63
|
+
$outData .= $cartitem->getProductClass()->getCode().',';
|
38
64
|
|
39
|
-
|
65
|
+
$outData .= $cartitem->getProductClass()->getProduct()->getName().',';
|
40
66
|
|
41
|
-
|
67
|
+
$outData .= $cartitem->getQuantity().',';
|
42
68
|
|
43
|
-
|
69
|
+
$outData .= $cartitem->getPrice().',';
|
44
70
|
|
45
|
-
|
71
|
+
$outData .= PHP_EOL;
|
46
72
|
|
73
|
+
|
74
|
+
|
75
|
+
if (fwrite($fhandle, $outData) === false) {
|
76
|
+
|
77
|
+
log_error('[注文処理] 書き込みエラーが発生しました.');
|
78
|
+
|
79
|
+
$this->entityManager->rollback();
|
80
|
+
|
81
|
+
return $this->redirectToRoute('shopping_error');
|
82
|
+
|
47
|
-
}
|
83
|
+
}
|
84
|
+
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
// ファイルを閉じる
|
90
|
+
|
91
|
+
fclose($fhandle);
|
92
|
+
|
93
|
+
catch (Exception $e) {
|
94
|
+
|
95
|
+
log_error('[注文処理] 保存処理エラーが発生しました.', [$e->getMessage()]);
|
96
|
+
|
97
|
+
$this->entityManager->rollback();
|
98
|
+
|
99
|
+
$this->addError($e->getMessage());
|
100
|
+
|
101
|
+
return $this->redirectToRoute('shopping_error');
|
102
|
+
|
103
|
+
}
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
// カート削除
|
108
|
+
|
109
|
+
log_info('[注文処理] カートをクリアします.', [$Order->getId()]);
|
110
|
+
|
111
|
+
$this->cartService->clear();
|
48
112
|
|
49
113
|
```
|
50
114
|
|
51
115
|
|
52
116
|
|
53
|
-
|
117
|
+
ここでの処理は全て正常終了しますが、そのあと「システムエラー」となり以下のログが出力されます。調査又は見直すべき部分を教えてください。
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
```log
|
122
|
+
|
123
|
+
システムエラーが発生しました。
|
124
|
+
|
125
|
+
["A new entity was found through the relationship 'Eccube\Entity\CartItem#Cart' that was not configured to cascade persist operations for entity: Eccube\Entity\Cart@000000002730a39b00000000111e5af7. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={\"persist\"}). If you cannot find out which entity causes the problem implement 'Eccube\Entity\Cart#__toString()' to get a clue.",
|
126
|
+
|
127
|
+
"C:\xampp\htdocs\eccube4\vendor\doctrine\orm\lib\Doctrine\ORM\ORMInvalidArgumentException.php",102,"
|
128
|
+
|
129
|
+
#0 C:\xampp\htdocs\eccube4\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(3443): Doctrine\ORM\ORMInvalidArgumentException::newEntitiesFoundThroughRelationships(Array)\n
|
130
|
+
|
131
|
+
#1 C:\xampp\htdocs\eccube4\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(362): Doctrine\ORM\UnitOfWork->assertThatThereAreNoUnintentionallyNonPersistedAssociations()\n
|
132
|
+
|
133
|
+
#2 C:\xampp\htdocs\eccube4\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(359): Doctrine\ORM\UnitOfWork->commit(NULL)\n#3 C:\xampp\htdocs\eccube4\var\cache\prod\ContainerCqirhhx\EntityManager_9a5be93.php(83): Doctrine\ORM\EntityManager->flush(NULL)\n
|
134
|
+
|
135
|
+
#4 C:\xampp\htdocs\eccube4\src\Eccube\Controller\ShoppingController.php(481): EntityManager_9a5be93->flush()\n
|
136
|
+
|
137
|
+
#5 C:\xampp\htdocs\eccube4\vendor\symfony\http-kernel\HttpKernel.php(151): Eccube\Controller\ShoppingController->checkout(Object(Symfony\Component\HttpFoundation\Request))\n
|
138
|
+
|
139
|
+
#6 C:\xampp\htdocs\eccube4\vendor\symfony\http-kernel\HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)\n
|
140
|
+
|
141
|
+
#7 C:\xampp\htdocs\eccube4\vendor\symfony\http-kernel\Kernel.php(200): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)\n
|
142
|
+
|
143
|
+
#8 C:\xampp\htdocs\eccube4\index.php(76): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))\n
|
144
|
+
|
145
|
+
#9 {main}"] [POST, /eccube4/shopping/checkout, ::1, http://localhost/eccube4/shopping/confirm, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36]
|
146
|
+
|
147
|
+
```
|