PrestaShop-在php上通过引用更新价格
我每天都会收到一份JSON,上面有我必须在网站上更新的价格。我能够正确地用php阅读json,但我不知道如何更新产品的价格。我曾尝试直接修改数据库,但没有成功。目标是找到每个有特定参考的产品,通常是一个产品,但可能有一些重复,然后改变价格。我从JSON中读取了这两个数据:引用和价格。到目前为止,我创建了一个全新的php文件,正在尝试:PrestaShop-在php上通过引用更新价格,php,json,prestashop,Php,Json,Prestashop,我每天都会收到一份JSON,上面有我必须在网站上更新的价格。我能够正确地用php阅读json,但我不知道如何更新产品的价格。我曾尝试直接修改数据库,但没有成功。目标是找到每个有特定参考的产品,通常是一个产品,但可能有一些重复,然后改变价格。我从JSON中读取了这两个数据:引用和价格。到目前为止,我创建了一个全新的php文件,正在尝试: include(dirname(__FILE__) . '/config/config.inc.php'); include(dirname(__FILE__)
include(dirname(__FILE__) . '/config/config.inc.php');
include(dirname(__FILE__) . '/init.php');
此代码没有错误,也没有任何更改。使用产品对象来实现您的目标
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();
}
但在这种情况下,它失去了一点意义。但是在产品对象中更新价格更安全首先,你不应该试图通过直接操作数据库中的内容来“绕过”这样的系统。这应该使用商店系统自己的方法来定位并更新这些产品。我知道这一点,但我相信对我来说,试图了解和理解Prestashop的精髓将更加困难。实际上,其目的是能够每24小时执行一次PHP,以读取最新的json并更新价格。我正试图从PostMan运行此程序,以查看它是否有效,但我只得到一个500错误。我不知道是否会发生这种情况,因为我试图从服务器外部访问php。启用调试模式并检查日志文件以获取错误报告一个问题。创建此文件的唯一目的是由cron作业执行。如果是这种情况,那么如果在prestashop网站环境之外执行,该代码是否有效?它被放在web文件夹中,但我并不真正理解这段代码是如何工作的。我需要每24小时执行一次。您需要至少包含这些文件includedirnameFILE。”/config/config.inc.php';includedirnameFILE'/php';以访问您的prestashop环境。然后检查脚本是否可执行,并将cronjob设置为运行它,但最好的方法是创建一个简单的模块来为您执行该任务。在互联网上有很多关于如何建立它的信息
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();
}