我正在为Opencart制造Atom进纸器,该进纸器似乎在1.5.6x的库存开发商店中效果很好。但是,当我将其迁移到实时存储(和开发人员)时,_product
表date_modified
列始终为产品行中的每个getProduct()
返回带有2015-01-15 10:45:18
或2014-12-01 12:52:23
的$result['date_modified']
结果数组。以看似随机的方式。
我尝试过的一些事情:
而是检查getProduct()
函数,以确保它拉正确的date_modified
。
检查以确保date_modified
实际上是DATETIME
列,而不是返回字符串。
我已经清理了恶意行/游牧行的数据库,并检查/修复了所有崩溃问题。
我尝试返回date_modified
而不使用任何格式,例如date(DATE_ATOM, $time)
我已经关闭了影响getProducts()
功能的所有其他mod。 stock和live getProducts()
之间的代码没有区别。
我已经在OC之外重建了数据库连接,并且成功地将date_modified
拉入了LEFT JOIN
,而没有任何manufacturer
表插入架构中。
我已经在DATETIME
表中找到了这些日期,但是似乎没有任何损坏的数据,该列设置为JOIN
并且正常运行。
我已经花了两天的时间将大部分头发拉出来,以寻找这样的列或查询如何损坏而不会触发任何错误。
最佳答案
编辑:发布此消息后,我注意到实时存储在制造商表(和其他表)上有一个date_modified
。另外,OC存储文字撇号,这些撇号弄乱了一些查询以及这些实体的JSON。
制造商表上的额外date_modified
显然来自于名为“ OpenShop”的经过修改的OC安装。我们没有意识到在安装过程中会执行包含的.sql
脚本。因此,使用JOIN
进行的查询将拉动制造商date_modified
而不是产品。
解决方案是在p.date_modified,
和SELECT
中的getProduct()
语句之后添加getProducts()
(或要显式提取正确的修改后的其他任何JOIN
查询)。另一种解决方案是删除那些第三方date_modified
列,但是它们很方便。
此外,请小心制造商,选件等名称中的撇号。我们最终暂时将其删除,并将在以后编写更好的存储过程代码。
关于php - Opencarts $ this-> model_catalog_product-> getProducts()返回错误/不存在的date_modified,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31482438/