0
我正在尋找一種解決方案來存儲每個訂單的產品屬性。實質上,我需要爲每個產品存儲一個獨特的產品批號,然後可以在前端搜索以找出哪些訂單包含來自特定批次的產品。我最初的想法是用產品屬性來做這件事,並按順序存儲每件產品的屬性。在Magento中保存包含訂單的產品屬性
有沒有人有更好的解決方案,或可以指出我在實施這個解決方案的正確方向?
編輯:還在尋找一個解決這個
我正在尋找一種解決方案來存儲每個訂單的產品屬性。實質上,我需要爲每個產品存儲一個獨特的產品批號,然後可以在前端搜索以找出哪些訂單包含來自特定批次的產品。我最初的想法是用產品屬性來做這件事,並按順序存儲每件產品的屬性。在Magento中保存包含訂單的產品屬性
有沒有人有更好的解決方案,或可以指出我在實施這個解決方案的正確方向?
編輯:還在尋找一個解決這個
我同意批號應該是產品屬性,但你並不需要保存它的兩倍。只需在訂單表中加入訂單表格時 - 這樣信息就會保持最新(除非您想知道訂購時的情況,在這種情況下,這是全部錯誤的)。
不幸的是,訂單表被夷爲平地,而不是EAV,所以不要處理好屬性。該集合的joinAttribute()
方法是一個存根。你可以通過這個query patterns library(自我推銷免責聲明;我在這裏使用它,因爲我寫了屬性函數並且不想重做工作),然後用特定於你的類擴展它。
class Knectar_Select_Product_Lot extends Knectar_Select_Product
{
public function __construct()
{
parent::__construct();
$this->joinAttribute('lots', 'catalog_product', 'lot_number',
'products.entity_id', 0, 'lot_number'
);
}
public static function enhance(Varien_Db_Select $select, $tableName, $condition, $columns = null, $type = self::LEFT_JOIN)
{
$select->_join(
$type,
array($tableName => new self()),
$condition,
$columns ? $columns : 'lot_number'
);
}
}
的enhance()
功能確實有點難,你只需要通過它的列調用它和過濾器。
$orderItems = Mage::getResourceModel('sales/order_item_collection');
Knectar_Select_Product_Lot::enhance($orderItems->getSelect, 'lots', 'lots.product_id = main_table.product_id');
$orderItems->addFieldToFilter('lot_number', 'ABC123');
如果您使用的是管理員網格集合那麼它的列過濾器會爲你做addFieldToFilter()
。