0

既存の製品名とランダムに生成された番号を連結して製品名を編集するモジュールを magento で作成しようとしています。

$model = Mage::getModel('catalog/product') ->load(1111) //製品モデルの取得

$collection = $model->getCollection(); //製品コレクション

foreach ($collection as $product) //製品を取得するためのループ

{

$model->load($product->getId());

$pname = $product->getName(); 

$this->model = Mage::getModel('catalog/product');

$new_name = $pname.' '.rand(1000,5000);

$this->model->setName($new_name);

}

これは私のコードです。コア ファイルを編集したり、管理パネルを使用したりせずに、この機能を実現するモジュールを作成しようとしています。

4

2 に答える 2

2

申し訳ありませんが、あなたのコードは醜いです。

コレクション (オブジェクトのリストからデータにアクセスするための良い方法) を使用したい場合は、->load() を使用してはいけません (非常に高価で、製品などの単一のオブジェクトのデータにアクセスする場合にのみ使用する必要があります)。ページ)

代わりにこのコードを試してください:

    $collection = Mage::getModel('catalog/product')->getCollection(); //products collection
    $collection->addAttributeToSelect('name'); //retrieve only product name (optimising SQL)

    foreach ($collection as $product) //loop for getting products
    {
        $pname = $product->getName(); 
        $new_name = $pname.' '.rand(1000,5000);
        $product->setName($new_name);
        $product->save(); // you missed that
    }

数値または製品が大きい場合は、SQL CONCAT() 関数を使用して単一の SQL クエリを作成することもできます...

于 2013-05-29T08:44:00.767 に答える