0

選択した複数選択属性値を別のテーブルに保存するオブザーバーを作成しました。属性値は、存在しない場合にのみ保存する必要があります。私のコードは次のとおりです。

public function catalogProductSaveBefore(Varien_Event_Observer $observer)
{
    $product=$observer->getProduct();
    $_product=Mage::getModel('catalog/product')->load($product->getId());
    $makeOptions=$_product->getAttributeText('make'); //array  [0] => Audi [1] => BMW
    $partsfindermodel=Mage::getModel('partsfinder/parts');
    foreach($makeOptions as $makeOption)
    {
        if(!$partsfindermodel->getMake($makeOption))
        {
            $partsfindermodel->setMake($makeOption)->save();
        }
    }
}

配列の最後の要素のみがテーブルに保存されます。

存在しない場合に値を保存する方法は?

4

1 に答える 1

0

部品番号などの属性でモデルを取得することを検討する必要があると思います。ロードするとIDが得られます。まだエントリがない場合、ID は取得されません。したがって、保存に関しては機能するはずです。

もう 1 つの落とし穴は、データベース内により多くのフィールドをモデルに追加できることですが、インストール スクリプトを再度実行しない限り、機能しない場合があります。したがって、モジュールのセットアップのために、テーブルと core_resource のエントリを削除した後で、これを試してください。次に、最初のインストール時に、すべてのテーブルがバックエンドで作成され、魔法のようにオンライン フォームで適切に機能します。

于 2012-08-22T13:57:06.697 に答える