首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过编程更新Prestashop产品状态?

如何通过编程更新Prestashop产品状态?
EN

Stack Overflow用户
提问于 2019-09-27 17:34:18
回答 2查看 61关注 0票数 0

我试图学习PS,我想通过外部脚本简单地更新所有Prestsahop产品的状态。

我有类似这样的东西来禁用供应商的所有产品(示例):

代码语言:javascript
复制
<?php

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

$default_lang = Configuration::get('PS_LANG_DEFAULT');
$product = new Product();
if ($product->id_supplier = 2) {
    $product->active = 0;
    $product->update();
}

但它抛出PrestaShopDatabaseException失败

EN

回答 2

Stack Overflow用户

发布于 2019-09-30 15:47:42

您似乎创建了一个新产品,但没有填写必填字段。如果要更改现有产品,则需要在创建产品对象时设置其id。所以你的代码应该是这样的

代码语言:javascript
复制
$product = new Product($id_product, true, $default_lang); // if you want to get certain language, if ont skip the last parameter

if ($product->id_supplier = 2) {
    $product->active = 0;
    $product->update();
}
票数 0
EN

Stack Overflow用户

发布于 2019-09-30 17:49:44

据我所知,您希望禁用特定供应商的所有产品

首先,您希望从数据库中的表ps_product中获取所有产品in的列表。然后按每个id_product实例化一个产品对象,如果它具有您提到的id_supplier条件,则将其禁用

代码语言:javascript
复制
require(dirname(__FILE__).'/../config/config.inc.php');

// getting list of product_id
$product_ids = Db::getInstance()->executeS('select id_product from ps_product');

foreach($product_ids as $item) {
    $product = new Product($item['id_product']);
    if ($product->id_supplier == 2) {
        $product->active = false;
        $product->update();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58131779

复制
相关文章

相似问题

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