Magento 1:在庫アイテムの「qty」と在庫ステータステーブルの関係


8

Magento 1では、在庫情報はStock Itemオブジェクトに保存されます。各Stock Itemオブジェクトは、製品オブジェクトに関連付けられています。MagentoはStock Itemオブジェクトをcataloginventory_stock_itemテーブルに永続化します。

ただし、各Stock Itemオブジェクトには、関連するStock Statusオブジェクトがあります。在庫状況は、製品の在庫状況を整数定数として格納する(インデックス|キャッシュ|非正規化)テーブルのように見え、複数の在庫アイテムと製品を異なるに関連付けることができますwebsite_id。Magentoは在庫ステータスオブジェクトをに永続化しますcataloginventory_stock_status。このためのクラス定数とテーブルスキーマを以下に示します。

class Mage_CatalogInventory_Model_Stock_Status extends Mage_Core_Model_Abstract
{
    const STATUS_OUT_OF_STOCK       = 0;
    const STATUS_IN_STOCK           = 1;
}

mysql> describe cataloginventory_stock_status;
+--------------+----------------------+------+-----+---------+-------+
| Field        | Type                 | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| product_id   | int(10) unsigned     | NO   | PRI | NULL    |       |
| website_id   | smallint(5) unsigned | NO   | PRI | NULL    |       |
| stock_id     | smallint(5) unsigned | NO   | PRI | NULL    |       |
| qty          | decimal(12,4)        | NO   |     | 0.0000  |       |
| stock_status | smallint(5) unsigned | NO   |     | NULL    |       |
+--------------+----------------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

ただし、完全に明確ではない理由により、この表には列ありqtyます。

これら2つのqty列の関係は何ですか?

どちらが真実のソースであり、どれがqtyインデックス化/キャッシュされた値ですか?stock_status在庫アイテムテーブルにあるもののキャッシュされたバージョンの値ですか?または、ウェブサイトレベルで在庫を管理するようにMagentoを設定する方法はありますか?それとも、私が説明した以外の関係ですか?


1
また、stock-itemテーブルのis_in_stockフィールドは、製品ビューページでは無視されます。
MagePsycho 2016年

ただ書き留めておきますが、私が気づいたことの1つは、商品が入荷待ちの場合、cataloginventory_stock_itemで数量が0未満になることがありますが、cataloginventory_stock_statusが0未満になることはありません。
mpchadwick 2017

回答:


7

qty in cataloginventory_stock_itemは真実のソースであり、qty in cataloginventory_stock_statusはキャッシュ/インデックス化された値であるように私には見えます。在庫状況インデックスを再構築すると、常にからcataloginventory_stock_itemに値がコピーされcataloginventory_stock_statusます。複数のWebサイトがある場合は、の各product_id / website_idコンボにもレコードがありますcataloginventory_stock_status。これは、Webサイトごとに異なる在庫レベルの可能性を示唆していますが、私が知る限り、qty値は常にそれぞれに対して同じです。

これは、この投稿でマリウスが提案したマルチストック機能の始まりかもしれないと思います: テーブルcataloginventory_stockの目的

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.