Magento捆绑项目按父ID过滤

时间:2012-01-19 11:58:15

标签: magento collections bundle product

我试图获取一系列选择,但过滤了父产品的ID。该集合包含一个属性parent_product_id,但显然这不起作用......不考虑过滤器。

这是我到目前为止所做的:

$children = Mage::getResourceModel('bundle/selection_collection')
    ->addAttributeToSelect(array('product_id', 'selection_price_value'))
    ->setStoreId(Mage::app()->getStore()->getId())
    ->addAttributeToFilter('parent_product_id',$item->getProductId());

它返回所有选择的集合,因此没有过滤器。有没有办法只获得一个特定捆绑产品的选择?请注意我使用此方法是出于某种原因......它应该仅基于父ID。

2 个答案:

答案 0 :(得分:3)

我建议检查集合如何构造查询:

$sql = Mage::getResourceModel('bundle/selection_collection')->getSelect()->__toString(); 
Mage::log($sql);`

检查您的过滤器是否确实存在(在WHERE子句中)并针对您的数据库运行解压缩的SQL查询(如果您具有shell访问权限,则在PhpMyAdmin或mysql-client中运行)。您应该看到问题的根源。

您还可以尝试使用方法,并对该集合的Zend_Select对象进行处理:

$collection = Mage::getResourceModel('bundle/selection_collection')
    ->addAttributeToSelect(array('product_id', 'selection_price_value'))
    ->setStoreId(Mage::app()->getStore()->getId());
$collection->getSelect()->where('`selection`.`parent_product_id` = '.$item->getProductId());

答案 1 :(得分:3)

尝试以下方法:

->addAttributeToSelect('*') //select all possible fields    
->addFieldToFilter('parent_product_id',array('eq' => $item->getProductId()));

某些字段是属性,其他字段只是该表中的字段。

查看此文件中的一些示例: /app/code/core/Mage/Bundle/Model/Product/Type.php