Magento 获取捆绑产品的单个选项id

Magento 获取捆绑产品的单个选项id,magento,bundle,option,product,Magento,Bundle,Option,Product,我正在处理一个庞大的捆绑项目列表,但只希望根据用户输入的条件将某些项目显示为选项。这非常简单,只需按照以下行设置一个if语句: $returnedproducts = array(21,50,78,23); // THESE ARE PRODUCT IDS. if ($_product->getTypeId() == 'bundle'){ $selectionCollection = $_product->getTypeInstance(true)->getSelect

我正在处理一个庞大的捆绑项目列表,但只希望根据用户输入的条件将某些项目显示为选项。这非常简单,只需按照以下行设置一个if语句:

$returnedproducts = array(21,50,78,23); // THESE ARE PRODUCT IDS.
if ($_product->getTypeId() == 'bundle'){
    $selectionCollection = $_product->getTypeInstance(true)->getSelectionsCollection(
           $_product->getTypeInstance(true)->getOptionsIds($_product), $_product
        );
    foreach($selectionCollection as $option) { 
      if(array_search($option['product_id'], $returnedproducts) !== FALSE){ // ADDED THIS TO FILTER
                  echo '<li>' .  $option->option_id . '</li>';
      }
    }
}
$returnedproducts=数组(21,50,78,23);//这些是产品ID。
如果($\u product->getTypeId()=='bundle'){
$selectionCollection=$\u product->getTypeInstance(true)->GetSelectionCollection(
$\u product->getTypeInstance(true)->getoptionSID($\u product),$\u product
);
foreach($selectionCollection作为$option){
if(array_search($option['product_id',$returnedproducts)!==FALSE){//将此添加到过滤器
回显“
  • ”.$option->option_id.
  • ”; } } }

    问题是,由于列表的大小和其他一些因素,这只会占用大量资源。我想找到一种方法,只查找和显示特定的选项id,而不必筛选整个列表(可以在获取选项id的查询中添加
    其中product_id=XXXX
    )。不过,我似乎找不到搜索单个捆绑包选项的解决方案。有人能帮我做到这一点吗?

    我可能会因此受到一些反弹,但我发现,当你达到Magento大型收藏的上限时,你可以做以下两件事之一

    你可以

  • 花钱购买托管解决方案,以获得更多ram/处理器等
  • 使用直接sql读取
  • 使用sql读取并不特别危险,因为您不会试图使用未经彻底测试的代码将某些内容放回高度管理的数据库。你打破任何东西的机会都很小。是的,有些情况下可能会出错,但你需要权衡使用这种技巧的成本/收益,这对你的具体情况非常有用。它仍然使用Magento的sql接口,而不是自定义接口

    修改以下代码以获取实体ID列表或任何要查找的内容,并使用该结果创建集合

    // Just in case ---$mysqli = Mage::getSingleton('core/resource')->getConnection('core_write');
    $mysqlr = Mage::getSingleton('core/resource')->getConnection('core_read');
    
    $sql = "select * from some_entity_table where some_column = 'somevars'";
    
    $results = $mysqlr->fetchAll($sql);
    
    echo "<PRE>";
    foreach ($results as $res)
    {
        var_dump($res);
    }
    
    //以防万一--$mysqli=Mage::getSingleton('core/resource')->getConnection('core_write');
    $mysqlr=Mage::getSingleton('core/resource')->getConnection('core_read');
    $sql=“从某些实体”表中选择*,其中某些列='somevars';
    $results=$mysqlr->fetchAll($sql);
    回声“;
    foreach(结果为$res)
    {
    var_dump($res);
    }
    
    请不要将您可以在标签中提供的信息放在主题行中;这里的标签系统运行良好,无需辅助。:-)谢谢。请注意,我曾尝试使用
    $selectionCollection->addFieldToFilter('entity_id',array('in'=>$returnedproducts))
    进一步筛选集合,但它似乎不起作用。如果我从中获得MySQL语句,它可以正常工作,但是一旦加载集合,它就会以某种方式删除
    addFieldToFilter()
    …您是否尝试了
    addAttributeToFilter()
    而不是
    addFieldToFilter()