0

友よ、load by id メソッドを使用して 2 つのバンドル製品をロードしたいです。これは私がそのために書いたコードです...

<?php
   $bundled = Mage::getModel('catalog/product');
   $stdid=$bundled->getIdBySku('123457');
   $compid=$bundled->getIdBySku('123458');

   /*get additional options of the each products*/
    $y=$bundled->load($compid);
    $selectionCollection_complete = $y->getTypeInstance(true)->getSelectionsCollection(
                $y->getTypeInstance(true)->getOptionsIds($y), $y);

    $x=$bundled->load($stdid);
    $selectionCollection_standard = $x->getTypeInstance(true)->getSelectionsCollection(
                $x->getTypeInstance(true)->getOptionsIds($x), $x);


     /*store the option head name to an array for future 
      reference*/            
     foreach($selectionCollection_standard as $std_opt)
     {
        $opt_std_hd_names.=$std_opt->getName()."<BR>";
     }
     foreach($selectionCollection_complete as $cmp_opt)
     {
       $opt_cmp_hd_names.=$cmp_opt->getName()."<BR>";
     }


     $display="<pre>".print_r($opt_std_hd_names."<br><br>".$opt_cmp_hd_names)."</pre>"
?>

しかし、私の問題は$opt_std_hd _names であり、$opt_cmp_hd_namesは同じ出力を返し、それらは最初にロードした製品のオプションです (この場合は $y. $x コードを最初に配置すると、$ のオプションが表示されます) x). 出力を以下に示します。

  output:

   Preparation and Filing of Incorporation Documents
   Verify Business Name Availability
   Unlimited Phone/Email Support
   24/7 Access to Our Online Status Center
   FREE Registered Agent Service for 6 Months
   BizComply (free with your Registered Agent Service)
   500 Four-Color Business Cards
   Business License Application Package
   Palo Alto's Business Plan Pro


   Preparation and Filing of Incorporation Documents
   Verify Business Name Availability
   Unlimited Phone/Email Support
   24/7 Access to Our Online Status Center
   FREE Registered Agent Service for 6 Months
   BizComply (free with your Registered Agent Service)
   500 Four-Color Business Cards
   Business License Application Package
   Palo Alto's Business Plan Pro

出力が同じであることがわかります。どうしてこうなるのか??あなたの提案をしてください

4

1 に答える 1

0
$bundled = Mage::getModel('catalog/product');

同じモデル オブジェクトを参照しており、両方の読み込み操作に使用しています。getIdBySku() メソッドを実行するたびに、モデルのデータが上書きされ、このモデルを参照するすべての変数も更新されます。

次の方法で、新しいオブジェクトのインスタンス化またはデータの取得を試みます。

$stdid  = Mage::getModel('catalog/product')->getIdBySku('123457');
$compid = Mage::getModel('catalog/product')->getIdBySku('123458');
于 2013-10-28T09:48:40.533 に答える