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を設定する方法はありますか?それとも、私が説明した以外の関係ですか?