解决了
请看下面我的回答。
背景
任何熟悉 zen cart 的人都会知道,它配备了世界上最无意义的产品排序选项,也就是 alpha 下拉排序器。
本质上,它的作用是允许您按产品开头的字母/数字选择产品。嗯,当我购物时,一个项目的首字母很少是一个有用的标准,所以我正在尝试创建一个更有用的产品分类器,它将根据添加的日期、价格和产品名称进行分类。然后根据属性类别进行过滤。
问题
因此,我设法强制分拣机进行我自己的查询,该查询正在处理除价格之外的所有内容。
这是我当前为降价设置生成的 SQL:
SELECT DISTINCT p.products_id, p.products_type, p.master_categories_id
,p.manufacturers_id, p.products_price, p.products_tax_class_id
,pd.products_description
,IF(s.status = 1, s.specials_new_products_price, NULL)
AS specials_new_products_price
,IF(s.status =1, s.specials_new_products_price, p.products_price)
AS final_price
,p.products_sort_order
,p.product_is_call
,p.product_is_always_free_shipping
,p.products_qty_box_status
FROM products p
LEFT JOIN specials s on p.products_id = s.products_id
LEFT JOIN products_description pd on p.products_id = pd.products_id
JOIN products_to_categories p2c on p.products_id = p2c.products_id
WHERE p.products_status = 1
and pd.language_id = '1'
and p2c.categories_id = '1'
GROUP BY p.products_id
ORDER BY final_price ASC
如您所见,我正在尝试根据最终价格进行排序,最终价格是正常价格或特价(如果已设置)的别名。这可以通过 phpmyadmin 正常工作。不幸的是,这不适用于 zen cart,我收到 php 错误:
PHP致命错误:1054:'订单子句'中的未知列'final_price' :: SELECT p.products_id,p.products_price_sorter,p.master_categories_id,p.manufacturers_id FROM products p LEFT JOIN specials on p.products_id = s.products_id LEFT JOIN products_description pd on p.products_id = pd.products_id JOIN products_to_categories p2c on p.products_id = p2c.products_id WHERE p.products_status = 1\r\n and pd.language_id = '1'\r\n and p2c.categories_id = ' 1' GROUP BY p.products_id ORDER BY final_price ASC 在 /var/www/includes/classes/db/mysql/query_factory.php 第 101 行
所以我查看了第 101 行,它引用了数据库抽象类中的错误处理方法。有谁知道这里出了什么问题以及我该如何解决它?