Prestashop-actionProductUpdate之后调用了哪个SQL?

Prestashop-actionProductUpdate之后调用了哪个SQL?,prestashop,hook,prestashop-1.6,Prestashop,Hook,Prestashop 1.6,当我更新产品的库存时,我尝试从ps\u产品更新名称。我在hookactionProductUpdate上添加了一个SQL请求 钩子工作了,因为当我设置一个骰子时执行SQL后,数据库将更新 但我不知道在哪里,调用了另一个SQL并将其设置回原来的值。我使用了评测,我看到它是在…之后调用的 如何将此调用设置为产品更新保存后的最后一项操作 这是简化代码: 公共函数hookActionProductUpdate($params) { $product=$params['product']; $sql='

当我更新产品的库存时,我尝试从
ps\u产品
更新
名称
。我在hook
actionProductUpdate
上添加了一个SQL请求

钩子工作了,因为当我设置一个
骰子时执行SQL后,数据库将更新

但我不知道在哪里,调用了另一个SQL并将其设置回原来的值。我使用了
评测
,我看到它是在…之后调用的

如何将此调用设置为产品更新保存后的最后一项操作

这是简化代码:

公共函数hookActionProductUpdate($params)
{
$product=$params['product'];
$sql='UPDATE'。\u DB\u前缀。\u产品mp
设置mp.name=''
其中mp.id_product='.$product->id;
Db::getInstance()->execute($sql);
}
“名称”字段位于“ps产品”表中


您必须为每种语言重命名产品。

最好使用对象产品来实现您的目标。差不多

public function hookActionObjectProductUpdateAfter($params)
{
    $product = new Product($params['object']->id);
    foreach(Language::getLanguages(true) as $language) {
        $product->name[$language['id_lang']] = 'new name';
    }
    $product->update();
}
在这种情况下,您不关心名称在数据库中的持久化位置,而且您永远不会损坏它


PS:如果你想得到“产品”,请注意参数。在actionProductUpdate中,它是params['product'],但在HookActionObjectProductUpdate中,它是params['object'](作为产品)之后的params。我在这件事上浪费了太多时间…

太奇怪了,文档上写着“保存产品后”,所以不应该更新。你试过hook:actionProductSave吗?没错,这就是我不明白的原因。。。我也试过了,但actionProductSave对你的答案毫无帮助。我以这个名字为例。事实是,重命名工作,但一个未知的电话来后,删除我的修改…谢谢你的回答。我以这个名字为例。谢谢你的提示,但我简化了我的问题。update()完成了这项工作,但在删除我的更新后,有东西一直在调用…好的,尝试使用这个钩子hookActionObjectProductUpdate,而不是hookActionProductUpdate。在所有产品操作完成后调用它。这是这个钩子,非常感谢你,伙计!让我们发布另一个回复,如果有人有同样的问题,我会添加一些信息