PrestaShop-通过在php上参考更新价格

我得到的JSON的每日价格必须在网站上更新。我可以用php正确读取json,但是我不知道如何更新产品价格。我尝试直接修改数据库,但没有成功。目的是找到每个具有特定参考的产品(通常是一个产品,但可能有重复的产品),然后更改价格。我从JSON中读取了这两个数据,即引用和价格。到目前为止,我创建了一个全新的php文件并正在尝试:

include(dirname(__FILE__) . '/config/config.inc.php');
include(dirname(__FILE__) . '/init.php');
foreach ($json_datos as $articulo){
    $cod_articulo = $articulo["Cod_Articulo"]; //this comes from the previously read json
    $precio_articulo = $articulo["PVP"]; //this comes from the previously read json

    $query = "UPDATE `"._DB_PREFIX_."product` prod SET price=".$precio_articulo." WHERE prod.reference=".$cod_articulo.";";
    Db::getInstance()->Execute($query);
}

此代码没有错误,也没有任何更改。

billagg 回答:PrestaShop-通过在php上参考更新价格

使用Product对象实现您的目标。

foreach ($json_datos as $articulo) {
    $cod_articulo = $articulo["Cod_Articulo"];
    $precio_articulo = $articulo["PVP"];

    $product = new Product(Product::getIdByReference($cod_articulo));
    $product->price = $precio_articulo;
    $product->update();
}

这样更安全稳定

UPD: 对于低于1.7.6的版本,您需要定义自己的方法

include(dirname(__FILE__) . '/config/config.inc.php');

function getIdByReference($reference)
{
    if (empty($reference)) {
        return 0;
    }

    if (!Validate::isReference($reference)) {
        return 0;
    }

    $query = new DbQuery();
    $query->select('p.id_product');
    $query->from('product','p');
    $query->where('p.reference = \'' . pSQL($reference) . '\'');

    return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
}

foreach ($json_datos as $articulo) {
    $cod_articulo = $articulo["Cod_Articulo"];
    $precio_articulo = $articulo["PVP"];

    $product = new Product(getIdByReference($cod_articulo));
    $product->price = $precio_articulo;
    $product->update();
}

但是在这种情况下,它有点失去知觉。但是在产品对象内更新价格仍然更安全

本文链接:https://www.f2er.com/3095468.html

大家都在问