Direct SQL 쿼리를 통해 Magento에서 제품의 Special_PRICE를 어떻게 설정합니까?
-
12-12-2019 - |
문제
CSV 파일에서 특별 가격을 대량 업데이트해야합니다 (SKU, 특별 가격, 즉석에 특별 가격, 즉 /부터).
지금당한 Magento 모델 방법을 사용하여 (CSV 행을 구문 분석 한 후) foreach 루프에서 다음과 같이하십시오.
$p = Mage::getModel('catalog/product');
$product_id = $p->getIdBySku($product['SKU']);
if (!$product_id) {
throw new Exception('Product Does Not Exists');
}
$p->setStoreId($store_id)->load($product_id);
$p->setSpecialPrice(floatval($product['Price']));
$p->setSpecialFromDate($product['FromDate']);
$p->setSpecialFromDateIsFormated(true);
$p->setSpecialToDate($product['ToDate']);
$p->setSpecialToDateIsFormated(true);
$p->save();
$p = null;
.
소수의 제품이 업데이트해야 할 때 괜찮습니다. 그러나 100 개 이상의 제품을 업데이트 할 때이가 느려지고 사이트 성능에도 영향을줍니다.
는 어쨌든 나는 대량 가져 오기 특별 가격을 가져갈 수 있고 직접적인 SQL 쿼리를 통해 날짜를 설정할 수 있습니까?
이 문제를 연구하면서 가능한 해결책을 발견했지만 (이 기사를 기반으로 http://fishpig.co.uk/magento/tutorials/update-prices-sql 이처럼 데이터베이스의 special_price
를 직접 설정하는 것 :
참고 : bd _ 는 내 표 접두사
.
UPDATE bd_catalog_product_entity AS CPE
INNER JOIN bd_catalog_product_entity_decimal AS CPED ON CPED.entity_id = CPE.entity_id
SET CPED.`value` = 2.99 -- New Special Price
WHERE
CPED.attribute_id = (
SELECT
attribute_id
FROM
bd_eav_attribute eav
WHERE
eav.entity_type_id = 4
AND eav.attribute_code = 'special_price'
)
AND CPED.store_id = 1 -- Retail Store
AND CPE.sku = 'ABS049' -- Sku Being Updated
이 이 작동하도록 이 나타납니다 (Magento UI 업데이트 된 값을 볼 수 있습니다). 나는 이것이 데이터베이스의 특별 가격을 직접 설정하는 것에 대해 올바른 방법인지 아직 확실하지 않다.
또한 from
/ to
날짜를 설정하는 방법은 아직 작업하지 않았습니다.
이에 대한 도움이 많이 감사 할 것입니다.
해결책
$storeId
는 가격을 업데이트하려는 가게입니다. $specialPrice
는 특별 가격이며, $sku
는 제품 SKU, $fromDate
및 $toDate
입니다 ... 음, 당신은 그 아이디어를 얻습니다.
이제이 코드를 실행하십시오.
$id = Mage::getSingleton('catalog/product')->getIdBySku($sku);
if ($id) {
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($id), //array with ids to update
array( //array with attributes to update
'special_price' => $specialPrice,
'special_from_date' => $fromDate,
'special_to_date' => $toDate,
),
$storeId //store id to update. If you want to update the global value use 0 in here
);
}
. 다른 팁
기존 제품을 업데이트하려면 수동으로 변경해야합니다.업데이트하는 데 필요한 열로 해당 속성 만 포함 해야하는 CSV를 가져와야합니다.SKU는 필드가 필요하므로 CSV 에이 문제를 포함시키는 것을 잊지 마십시오.
제품을 매우 빠르게 가져올 것입니다.