에 대한 해결책을 찾고 있지만 두 번 저장할 필요가 없습니다. 나중에 필요할 때 주문 테이블에 가입하십시오. 정보가 최신 상태로 유지됩니다 (주문시의 정보를 알고 싶지 않은 경우,이 경우 모두 잘못됨).
불행히도 주문 테이블은 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()
을 할 것입니다.