首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除购物车价格规则中过期的优惠券代码?(DB表salesrule_coupon)

如何删除购物车价格规则中过期的优惠券代码?(DB表salesrule_coupon)
EN

Stack Overflow用户
提问于 2018-01-20 22:45:14
回答 1查看 786关注 0票数 1

当有人注册时事通讯时,我使用脚本在特定的购物车价格规则中生成唯一的优惠券代码。

我现在想删除该规则中的过期优惠券代码,而不是规则本身。我发现here唯一的脚本就是删除整个规则。

如何使用MAGE::删除由以下脚本生成的过期条目?

代码语言:javascript
复制
define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/app/Mage.php';

//Initializes Mage
Mage::app('admin');


$todaysdateis = date('Y-m-d', strtotime('+14 days'));
$generator = Mage::getModel('salesrule/coupon_massgenerator');
$data = array
(
'max_probability'   => .25,
'max_attempts'      => 10,
'uses_per_customer' => 1,
'uses_per_coupon'   => 1,
'qty'               => 1, //number of coupons to generate
'length'            => 3, //length of coupon string
'to_date'           => "$todaysdateis", //ending date of generated promo
'prefix'            => $prefix,
'format'          => Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC,
'rule_id'         => $rule_id //the id of the shopping cart rule you will use 
as a template
 );

 $generator->validateData($data);
 $generator->setData($data);
 $generator->generatePool();

我发现的代码将删除规则,而不仅仅是规则中过期的优惠券如下所示。我如何调整才能删除规则中包含的各个过期优惠券代码?

代码语言:javascript
复制
<?php 
require_once('app/Mage.php');
Mage::app('default');

$allCoupons = Mage::getModel('salesrule/rule')->getCollection()->load();
$rightNow = strtotime('now');
$today = date("Y-m-d", $rightNow);

foreach ($allCoupons as $aCoupon) {
$couponName = $aCoupon->getName();
$subString = substr($couponName,0,16);
$expiryDate = $aCoupon->getToDate();
$expiryDay = date("Y-m-d", $expiryDate);

if(($subString == "XX") && ($today > $expiryDate)) { 
$aCoupon->delete();
}
}

?>

期待您的回音!

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 01:03:51

回答我自己的问题。我找到了一个有效的解决方案。但是有没有更好的/更安全的呢?

代码语言:javascript
复制
$rightNow = strtotime('now');
$today = date("Y-m-d", $rightNow);

define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/app/Mage.php';
Mage::app('admin');


$read = Mage::getSingleton('core/resource')->getConnection('core_read');
$resource = Mage::getSingleton('core/resource');
$writeConnection = $resource->getConnection('core_write');
$salesrule = Mage::getSingleton('core/resource')->getTableName('salesrule_coupon');

$ruleid = '51';

$query = "SELECT * FROM salesrule_coupon WHERE rule_id ='".$ruleid."'";

$results = $read->fetchAll($query);

if ($results){
foreach($results as $result) {

if ($result['expiration_date'] < $today) {
    $querydel = "DELETE FROM salesrule_coupon WHERE coupon_id ='".$result['coupon_id']."'";

    $writeConnection->query($querydel);
   }
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48357449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档