我们正在 bitrix 16.5 中切换到新版本的 php 7,我正在尝试使用以下代码将个人姓名写入数据库:
https://gist.github.com/vasilukwolf/c2dfaf819de9d9b65a18b0264757c3a0
但是,写入失败。尝试更改事件,尝试只发送,结果是一样的。该条目被阻止。甚至尝试使用建议:
http://fmwd.ru/stati/cms/1c-bitrix/pochemu-ne-rabotaet-csaleorderpropsvalue.html
但是数据库没有被写入。然而,一切都完美地写入了缓存。问题是如何将这些信息写入数据库,类似于OnOrderSave:
https://gist.github.com/vasilukwolf/995446e77fedf29014d5bfa640734b94
不幸的是,只有这有帮助:
https://stackoverflow.com/questions/11761140/mysql-on-duplicate-key-update-trouble
于是,我直接提出了要求:
哪个发送到数据库,一切正常。为什么在标准 bitrix 函数中还有另一个请求。我向 bitrix 写了一个请求,也许我会添加更多。
这是问题的答案:
我发布是为了 CodeReview。支持回复:
为此,我们使用了 OnSaleOrderBeforeSaved 事件。
帮我完成了:
https://mrcappuccino.ru/blog/post/work-with-basket-bitrix-d7
那么PHP7跟它有什么关系呢。你白纸黑字地写:违反了 IX_SOPV_ORD_PROP_UNI 键的唯一性。它不以任何方式依赖于 PHP 版本。看起来有某种触发器会在更新此表中的记录时触发。你需要处理这个......也许在一次严重的更新期间你的更新出了点问题,或者你正在绕过 API 访问数据库的某个地方并且那里有些东西搞砸了。