バージョン選択

フォーラム

メニュー

オンライン状況

55 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 55
もっと...

サイト内検索

質問 > 管理機能 > データベース上のorder_Itemのquantityが更新されない。

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
gk117
投稿日時: 2023/11/15 10:13
対応状況: −−−
新米
登録日: 2023/11/15
居住地:
投稿: 3
データベース上のorder_Itemのquantityが更新されない。
[EC-CUBE] EC-CUBEのバージョン 4.0.5
[レンタルサーバ] AWS EC2
[OS] MacOS Monterey 12.6.7
[PHP] PHP Version 7.4.11
[データベース] MySQL 5.7
[現象] 「StockMultipleValidator.php」のカスタマイズにて、在庫数以上の商品を購入しようとした場合、
配布数(quantity)を在庫数に変更してエラーを出さず続行するという処理に変更しようとしていいます。

その際に、setQuantityで該当の商品の配布数を変更し、
処理の最後にentityManager->flush()でDBへの永続化をしようとしているのですが、
購入完了後に orderitem のテーブルを確認すると、配布数が変更されていないことがわかりました。

どのようにすれば永続化が正しく行われるでしょうか?
勉強不足で大変恐縮ですが、ご教示いただけましたら幸いです。

※setQuantityの前後でログ出力をして、
OrderItemエンティティ内でquantityが変更されていることは確認しました。

-----------ソースコード-----------
foreach ($OrderItemsByProductClass as $id => $Items) {
/** @var ProductClass $ProductClass */
$ProductClass = $this->productClassRepository->find($id);
if ($ProductClass->isStockUnlimited()) {
continue;
}
$stock = $ProductClass->getStock();

$isZero = false;
$isZeroBonus = false;
if ($stock == 0) {
foreach ($Items as $Item) {
$Item->setQuantity($stock);
if ($Item->isBonus()) {
$isZeroBonus = true;
} else {
$isZero = true;
}
}
if ($isZero) {
$this->throwInvalidItemException('front.shopping.out_of_stock_zero', $ProductClass, true);
} elseif ($isZeroBonus) {
continue;
}
}
$isOver = false;
$isOverBonus = false;
foreach ($Items as $Item) {
if ($stock - $Item->getQuantity() >= 0) {
$stock = $stock - $Item->getQuantity();
} else {
$Item->setQuantity($stock);
$stock = 0;
if ($Item->isBonus()) {
$isOverBonus = true;
} else {
$isOver = true;
}
}
}
if ($isOver) {
$this->throwInvalidItemException('front.shopping.out_of_stock', $ProductClass, true);
} elseif ($isOverBonus) {
//nothing
}
$Items->entityManager->flush();
}
-----------ソースコード-----------
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » データベース上のorder_Itemのquantityが更新されない。 gk117 2023/11/15 10:13
     Re: データベース上のorder_Itemのquantityが更新されない。 yuh 2023/11/15 10:47
       Re: データベース上のorder_Itemのquantityが更新されない。 gk117 2023/11/15 10:54
         Re: データベース上のorder_Itemのquantityが更新されない。 mcontact 2023/11/15 12:44
     Re: データベース上のorder_Itemのquantityが更新されない。 gk117 2023/11/16 19:15

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,239名です
総投稿数は110,055件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1651
8
red
1570
9
mcontact
1299
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.