Opencarts $this->model_catalog_product->getProducts() 返回错误/不存在的date_modified



我正在为openart制作一个Atom feeder,它似乎在1.5.6x开发商店上工作得很好。但是,当我将其迁移到实时存储(和开发)_productdate_modified列总是返回getProduct()结果数组,其中2015-01-15 10:45:182014-12-01 12:52:23为产品行....中的每个$result['date_modified']以一种看似随机的方式。

Some things I tried:

  • 检查getProduct()函数,以确保它提取正确的date_modified
  • 检查确保date_modified实际上是DATETIME列,而不是返回字符串。
  • 我已经清理了DB的流氓/游牧行,并检查/修复了任何崩溃。
  • 我已经尝试返回date_modified没有使用任何格式,如date(DATE_ATOM, $time)
  • 我已经关闭了所有其他影响getProducts()功能的mod。库存和实际getProducts()之间的代码没有差异。
  • 我已经重建了OC外部的DB连接,并成功地将date_modified拉入模式,没有任何LEFT JOIN表。
  • 我已经在manufacturer表中找到了这些日期,但似乎没有任何损坏的数据,该列设置为DATETIMEJOIN s功能正常。
  • 我已经把我的头发拔出来了2天,寻找一个列或这个查询如何像这样腐败而不触发任何错误。

编辑:在发布这篇文章后,我注意到现场商店在制造商表(和其他表)上有一个date_modified。此外,OC存储了文字撇号,这些撇号会混淆一些查询以及这些实体的JSON。

制造商表上额外的date_modified显然来自一个名为"OpenShop"的修改OC安装。我们没有意识到有一个在安装过程中执行的.sql脚本。因此,使用JOIN的查询提取的是制造商date_modified,而不是产品。

解决方案是在getProduct()getProducts()SELECT语句之后添加p.date_modified,(或任何其他JOIN查询,您想要显式地拉出正确的修改)。另一个解决方案是删除那些第三方date_modified列,但它们有点方便。

另外,注意制造商、选项等名称中的撇号。我们最终暂时删除了它们,并将在以后编写更好的存储过程。

相关内容

  • 没有找到相关文章

最新更新