在prestashop中更新产品后更改phmyadmin中的默认类别

时间:2018-09-08 14:35:53

标签: mysql phpmyadmin prestashop

我有一个简单的问题。 对于真正的程序员,应该选择花生。

该产品受特定价格规则影响时,我想更改该产品的类别。

这就是我所拥有的,但是什么也没有发生……

UPDATE psc5_product AND psc5_product_shop SET id_category_default=771 WHERE id_product IN (SELECT id_product FROM psc5_specific_price WHERE id_specific_price>0);

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试一下:

UPDATE `psc5_product`
SET `id_category_default` = 771
WHERE `id_product` IN (SELECT `id_product` FROM `psc5_specific_price` GROUP BY `id_product`);

UPDATE `psc5_product_shop`
SET `id_category_default` = 771
WHERE `id_product` IN (SELECT `id_product` FROM `psc5_specific_price` GROUP BY `id_product`);

答案 1 :(得分:0)

好的,这比我想的要复杂一些。

当预设的特定价格规则开始(从-到-日期)时,表psc5_product中没有更新。因此触发器没有开始他的工作。

因此,我需要从日期开始直到结束日期开始工作的mysql脚本,当结束日期结束时,需要回退更改。

示例:

规则1: id_product 1 id_category_default 1价格规则从到09-09-2018 00:00:00到10-09-2018 23:59:59 --->需要更改为id_category_default 2

规则2: 在11-09-2018 00:00:00 id_product不再受价格规则影响,并且id_category_default需要再次获得1。

目前我还不知道如何开始... 对我而言,最难的部分是规则2中的类别ID(升级结束后)是可变的(我有771个类别...),这在规则1中是固定的,没有那么难... < / p>

答案 2 :(得分:0)

尝试一下:

//Deleting old products in this category
Db::getInstance()->executes('DELETE FROM '._DB_PREFIX_.'category_product WHERE id_category = 771');

//Recovery of products with a reduction
$req = Db::getInstance()->executes('SELECT id_product FROM '._DB_PREFIX_.'specific_price');

//Product update with the correct default category + Product attribution in the category
foreach ($req as $resu) {
    $prod = new Product($resu['id_product']);
    $prod->id_category_default = 771;
    $prod->save();
    $product->addToCategories(array(0 => 771));
}