我将在网格中仅显示可配置的产品。并添加了一列以显示此产品下的简单可配置产品的数量。为此,我这样写了。它工作正常。显示可在列中配置的简单产品数量。但如何将列过滤器应用于此。它不起作用。这是我的查询
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('type_id', array('eq' => 'configurable'))
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('attribute_set_id')
->addAttributeToSelect('type_id');
$collection->getSelect()
->joinLeft(
array('a'=>'catalog_product_super_link'),
'a.parent_id = e.entity_id',
array('assoc_count'=>'count(a.parent_id)'))->group('e.entity_id');
在此处显示列
$this->addColumn('assoc_count',array(
'header'=> Mage::helper('catalog')->__('Count SimplePro'),
'width' => '80px',
'index' => 'assoc_count',
));
答案 0 :(得分:1)
尝试使用filter_condition_callback
$this->addColumn('assoc_count',array(
'header'=> Mage::helper('catalog')->__('Count SimplePro'),
'width' => '80px',
'index' => 'assoc_count',
'filter_condition_callback' => array($this, 'assocFilterCallback'),
));
protected function assocFilterCallback($collection, $column) {
$val = $column->getFilter()->getValue();
if (is_null(@$val))
return;
$collection->getSelect()->having('assoc_count=?', $val);
}
可能是代码应该重建,但我认为你理解这个想法。