在Magento 1中,库存信息存储在库存项目对象中。每个库存项目对象都与一个产品对象相关联。Magento将“库存物料”对象保留到cataloginventory_stock_item
表中。
但是,每个库存项目对象都有一个相关的库存状态对象。库存状态似乎是一个(索引|非正规化)表,该表以整数常量存储产品的库存状态,并允许您将多个库存项目和不同的产品关联起来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
列。
这两qty
列之间是什么关系?
哪个是事实的来源,qty
哪个是索引/缓存的值?该值是否stock_status
只是库存项目表中内容的缓存版本?还是有一种方法可以配置Magento在网站级别上管理库存?还是这种关系不是我所描述的?
1
另外,在产品视图页面中将忽略库存项目表中的is_in_stock字段。
—
MagePsycho
仅作说明-我注意到的一件事情是,如果某个产品可延期交货,则cataloginventory_stock_item中的数量可以小于0,但是cataloginventory_stock_status永远不会低于0。但是我不知道为什么会这样。
—
mpchadwick