0

以下のコードを使用して、プログラムで Magento データベースから製品を削除しましたが、このコードは私にとってはうまくいきます。

  $productEntityTable = Mage::getModel('importexport/import_proxy_product_resource')->getEntityTable();
  if ($idToDelete) {
  $this->db->query("DELETE FROM `{$productEntityTable}` WHERE `entity_id` IN (?)", $idToDelete);
  echo 'Deleted';
  }

しかし、製品画像も削除したいので、以下のコードを使用しました

$_product = Mage::getModel('catalog/product')->load($idToDelete);
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
try {
  $items = $mediaApi->items($_product->getId());
  foreach($items as $item) {
  echo ($mediaApi->remove($_product->getId(), $item['file']));
  }
} catch (Exception $exception){
  var_dump($exception);
  die('Exception Thrown');
}

そして、次のエラーが発生し、多くのコードを使用しましたが、常に同じエラーが発生しました。

致命的なエラー: 263 行目の /my_path/app/code/local/Mage/Catalog/Model/Product/Attribute/Backend/Media.php の非オブジェクトに対するメンバー関数 getUserId() の呼び出し

4

2 に答える 2

0
    Use can use below code

<?php
    require_once "YOURMAGENTODIR/app/Mage.php";
    umask(0);
    Mage::app('admin');
    Mage::setIsDeveloperMode(true);

    $productCollection=Mage::getResourceModel('catalog/product_collection');
    foreach($productCollection as $product){
    echo $product->getId();
    echo "<br/>";
             $MediaDir=Mage::getConfig()->getOptions()->getMediaDir();
            echo $MediaCatalogDir=$MediaDir .DS . 'catalog' . DS . 'product';
    echo "<br/>";

    $MediaGallery=Mage::getModel('catalog/product_attribute_media_api')->items($product->getId());
    echo "<pre>";
    print_r($MediaGallery);
    echo "</pre>";

        foreach($MediaGallery as $eachImge){
            $MediaDir=Mage::getConfig()->getOptions()->getMediaDir();
            $MediaCatalogDir=$MediaDir .DS . 'catalog' . DS . 'product';
            $DirImagePath=str_replace("/",DS,$eachImge['file']);
            $DirImagePath=$DirImagePath;
            // remove file from Dir

            $io     = new Varien_Io_File();
             $io->rm($MediaCatalogDir.$DirImagePath);

            $remove=Mage::getModel('catalog/product_attribute_media_api')->remove($product->getId(),$eachImge['file']);
        }


    }
于 2016-12-26T07:14:58.567 に答える
0

現在のユーザーを求めている可能性があります。

現在のユーザーを管理者として設定し、コードの先頭行の下に追加します

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
于 2016-12-26T06:57:53.130 に答える