バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 在庫数の更新に関して質問です

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yskz
投稿日時: 2018/10/31 18:33
対応状況: −−−
新米
登録日: 2018/10/31
居住地:
投稿: 8
Re: 在庫数の更新に関して質問です
ご教授ありがとうございます!

テーブルの役割の違い、ロックに関して、共に了解しました。
特にロックに関して、トランザクション回りなども含めて、もう少し調べてから実装してみようと思います。
nanasess
投稿日時: 2018/10/31 15:37
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: 在庫数の更新に関して質問です
ProductClass::stock は、表示用の在庫数、
ProductStock は商品購入時に行ロックされるテーブルです。

ProductStock のロックを取得してから更新するのが正しいです。
以下の実装が参考になると思います。

https://github.com/EC-CUBE/ec-cube/blob/4.0/src/Eccube/Service/PurchaseFlow/Processor/StockReduceProcessor.php#L80-L94
yskz
投稿日時: 2018/10/31 12:53
対応状況: −−−
新米
登録日: 2018/10/31
居住地:
投稿: 8
在庫数の更新に関して質問です
[EC-CUBE] 4.0.0
[レンタルサーバ] (開発環境 WSL)
[OS] windows10
[PHP] 7.2.11
[データベース] MySQL 5.7.24
[WEBサーバ] Apache/2.4.18
[ブラウザ] edge / chrome
[導入プラグインの有無] 無
[カスタマイズの有無] カスタマイズ準備中

※synfony/doctorineは初心者です。EC-CUBEも3系は触れてません。

他システムとの連携で、在庫を変動させたいと思っています。
とりあえず/src/Eccube/Controller/Admin/Product/ProductController.phpなどを参考に、
以下のような手順で更新できているようなのですが、作法的にあっているのでしょうか?


// $productClass : 更新対象の商品コードを持ったproductClass
if( !$productClass->isStockUnlimited() ){
  $productClass->setStock( 【新在庫数】 );
  $this->entityManager->persist( $productClass );
  
  $productStock = $productClass->getProductStock();
  $productStock->setStock( 【新在庫数】 );
  $this->entityManager->persist( $productStock );
  
  $this->entityManager->flush();
}


特に在庫数が2テーブルにそれぞれ存在しているのが不思議に思ったので、その辺りの理由も確認出来ると嬉しいです。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,307名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.