我试图获取一系列选择,但过滤了父产品的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。
答案 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