0

我将只在我的网格中显示可配置的产品。并增加一栏显示该产品下的简单可配置产品的数量。为此,我这样写。它工作正常。在列中显示可配置的简单产品的数量。但是如何对此应用列过滤器。它不工作。这是我的查询

$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',
    ));
4

1 回答 1

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);
}

可能是代码应该被重建,但我认为你理解这个想法。

于 2013-01-31T07:41:08.250 回答