我试图学习PS,我想通过外部脚本简单地更新所有Prestsahop产品的状态。
我有类似的方法可以使供应商禁用所有产品(例如):
<?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
答案 0 :(得分:0)
您似乎在创建新产品,但没有填写必填字段。如果要更改现有产品,则需要在创建产品对象期间设置其ID。 因此您的代码应类似于
$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();
}
答案 1 :(得分:0)
据我了解,您想禁用特定供应商的所有产品
首先,您要从数据库中的表ps_product获取所有产品ID的列表。然后按每个id_product实例化一个product对象,如果它具有您提到的id_supplier条件,则将其禁用
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();
}
}